加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > 交互 > 正文

Java中IO流,输入输出流概述与总结

发布时间:2021-01-01 07:18:26 所属栏目:交互 来源:网络整理
导读:副标题#e# 总结的很粗糙,以后时间富裕了好好修改一下。 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中。其中, 所有输入流类都是抽象类InputStream(字节输入流),或者抽象类Reader(字符输入流)的子类; 而所有输出流

list()获取某个目录下所有的文件或者文件夹:

1 package com.ningmeng; 2 3 import java.io.File; 4 5 public class FileTest { 6 7 public static void main(String[] args){ 8 File file=new File("D:/");//指定文件目录 9 String[] str=file.list();//获取指定目录下的所有文件或者文件夹的名称数组 10 for(String s : str){//加强for循环遍历输出 11 System.out.println(s); 12 } 13 14 } 15 } 1 package com.ningmeng; 2 3 import java.io.File; 4 5 public class FileTest { 6 7 public static void main(String[] args){ 8 File file=new File("D:/");//指定文件路径 9 File[] f=file.listFiles();//获取指定目录下的所有文件或者文件夹的File数组 10 for(File fi : f){//加强for循环遍历输出 11 System.out.println(fi); 12 } 13 14 } 15 }

案例演示:

获取某种格式的文件比如获取某种后缀的图片,并输出文件名:

1 package com.ningmeng; 2 3 import java.io.File; 4 5 public class FileTest { 6 7 public static void main(String[] args){ 8 File file=new File("C:UsersbiehongliPicturesxuniji"); 9 String[] str=file.list(); 10 11 for(String s : str){ 12 if(s.endsWith(".jpg") || s.endsWith(".png")){//如果后缀是这种格式的就输出 13 System.out.println(s); 14 } 15 } 16 17 18 } 19 }

下面演示获取文件夹下面子目录里面的文件获取(并没有完全获取子目录的子目录等等,仅仅获取了子一级目录):

1 package com.ningmeng; 2 3 import java.io.File; 4 5 public class FileTest { 6 7 public static void main(String[] args){ 8 File file=new File("C:UsersbiehongliPicturesCamera Roll"); 9 10 File[] f=file.listFiles(); 11 12 for(File fi : f){ 13 if(fi.isDirectory()){//判断如果是一个目录 14 String[] s=fi.list(); 15 for(String str : s){ 16 if(str.endsWith(".jpg")){ 17 System.out.println(str); 18 } 19 } 20 } 21 } 22 } 23 }

A:文件名称过滤器的概述

    public String[] list(FilenameFilter filter)     public File[] listFiles(FileFilter filter) 1 package com.ningmeng; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 6 public class FileTest { 7 8 public static void main(String[] args){ 9 File file=new File("C:UsersbiehongliPicturesCamera Roll"); 10 11 String[] str=file.list(new FilenameFilter() {//过滤器,匿名内部类 12 13 @Override 14 public boolean accept(File dir,String name) { 15 // TODO Auto-generated method stub 16 //System.out.println(dir);//获取文件的路径 17 //System.out.println(name);//获取文件的名字 18 File f=new File(dir,name); 19 return f.isFile() && f.getName().endsWith(".jpg"); 20 } 21 }); 22 for(String s : str){ 23 System.out.println(s); 24 } 25 26 } 27 }

7:下面以一些字节输入输出流具体的案例操作(操作的时候认清自己使用的是字节流还是字符流):

注意:read()方法读取的是一个字节,为什么返回是int,而不是byte 字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到222221111;那么这22222111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果22222111会在其前面补上;24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型

FileInputStream的单个字节读取:

FileOutputStream的单个字节写入:

1 package com.ningmeng; 2 3 import java.io.FileInputStream; 4 import java.io.FileOutputStream; 5 6 public class FileTest { 7 8 public static void main(String[] args) throws Exception{ 9 FileInputStream fis=new FileInputStream("aaa.txt"); 10 FileOutputStream fos=new FileOutputStream("bbb.txt",true); 11 //FileOutputStream()后面加true指文件后面可追加 12 13 int a=fis.read();//read()一次读取一个字节 14 System.out.println(a);//读取的一个字节输出 15 16 fos.write(101);//write()一次写一个字节 17 fis.close();//一定记得关闭流,养成好习惯 18 fos.close(); 19 } 20 }

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读