黑马程序员---------IO流File类

来源:互联网 发布:网络危机公关流程 编辑:程序博客网 时间:2024/04/28 02:41

------- 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的目录

 

 

 


0 0
原创粉丝点击