------- android培训、java培训、期待与您交流! ----------
IO流:用于处理设备上的数据
流:可以理解为数据的流动,IO流最终以对象的形式体现,对象都存在IO包中
流的分类:输入流(读,将外围设备上的数据输入到内存中) 输出流(写,将内存中的数据输出到外围设备上)
疑问处理数据不同分为:字节流 字符流
字节流:处理字节数据的流对象,字节流可以处理设备上所有的数据,字节流也可以处理字符流
为什么会有字符流呢?因为每一个国家的字符都不一样,涉及到了编码表的问题,字符流就是将字节流+编码表封装成了对象,只要操作字符,首先考虑字符流
流的操作只有读和写
流的体系因为功能不同,但是有相同的内容,不断的向上抽取,形成继承体系,这个体系有四个基类,而且都是抽象类
字节流基类:InputStream Outputstream
字符流基类:Reader Writer
File类:
Filefile=new File(1.txt);//将一个具体路径封装成了对象,也可以封装不存在的未见或目录(1.txt)为相对路径(c:\\1.txt)为绝对路径
File类常见方法
file.getName();//获取名字
longlen=file.length()//获取长度
file.getParent()//获取所在目录
file.mkdir()//创建目录文件 file.mkdirs()//创建多级目录文件
file.isDirectory//检查是否是一个目录? file.isFile()//检查是否是一个文件
获取指定文件夹中所有的文件和文件的名称
Filedir =new File();String[] names=dir.list();
For(Filename:names){syso(name);}//只能列出文件的名字
Filedir=new File();File[] names=dir.listFile()
For(Filename:names){syso(name);}//可以获得绝对路径
过滤器:过滤出需要的文件
文件名过滤器:FilenameFilter
正常做法File dir=newFile();String[] names=dir.list();
For(Fielname:names){if(name.endWith(.class));syso(name)}
自定义一个文件名过滤接口FilenameFilter
Publicstatic filterBySuffix implements FilenameFilter{
private String suffix;
public filterBysuffix(Stringsuffix){this.suffix=suffix;}
@override
Public Boolean accept(){return name.endWith(suffix)}
}
Filedir=new File();String[] names=dir.list();FilenameFilter filter=newfilterBySuffix(.class);for(File name:names){syso(name);}
文件过滤器:FileFilter同文件名过滤器
只是returnpathname.isFile()
也可以获取.java return pathname.getName().endWith();
递归:自身调用自身,即函数内部又调用了该函数
但是每次调用参与数据都不相同
例子:获取一个文件夹下所有子目录的文件
Filedir=new File();getAllFile(dir);
Publicstatic void getAllFile(File dir){
File[]files=dir.listFile();for(Filefile:files){if(file.isDirectory()){getAllFile(file)}else{syso(file)}}}
如果想删除所有目录下的所有文件,递归删除的同时,别放了删除,dir的目录