File类的学习

来源:互联网 发布:澳洲留学体验 知乎 编辑:程序博客网 时间:2024/06/08 02:44

File类是用来将文件或文件夹封装成对象的类,使得使用者能过更加方便地对文件和文件夹进行操作


之前学习了IO流,IO流也是对文件的操作,那么为什么还要新创一个File类呢?因为IO流实际操作的是文件中数据,而不是对文件本身进行操作,而且IO流根本无法进行关于文件夹的操作,所以,引入一个File类还是很有必要的


对于File类的用法,实际上就是通过路径来对文件或文件夹进行封装,因此,在File类的使用中,路劲是最为关键的属性


构造函数:


File(String pathname)//通过路径初始化File对象,pathname可以是存在的路径,也可以是不存在的路径

File(String parent,String child)//如此构造出来的对象路径为parent+child

File(File parent,String child)


重要的方法和属性:


1,分隔符:静态属性 separator 在Windows中等价于\,利于跨平台


2,建立(虽然一开始通过提供的路径已经封装成了对象,但并不代表建立了文件(文件夹),只是有了对象,要通过对象的方法来建立文件(文件夹)):

——1,bool createNewFile()//根据File对象封装的路径来建立一个文件,如果文件已存在,则不建立,返回false

——2,bool mkdir()//根据File对象封装的路径来建立一个文件夹,但是只能建立一层,不能建立多层次的文件夹,如果文件夹已存在或路径包含多层文件夹,则不建立,返回false

——3,bool mkdirs()//可以建立多层次的文件夹


3,删除:

——1,bool delete()//删除已存在的指定文件(文件夹)

——2,bool deleteOnExit()//在程序推出时删除指定文件(文件夹)


4,判断:

——1,bool exists()//判断文件是否存在

——2,bool isFile()//判断是否是文件

——3,bool isDirectory()//判断是否是文件夹

——4,bool isHidden()//判断是否是隐藏文件

——5,bool isAbsolute()//判断路径是否是绝对路径

*注意:2,3,4:若还没建立文件(文件夹),那一定是false


5,获取信息:

——1,getName()

——2,getPath()//获取路径

——3,getParent()

——4,getAbsolutePath()//获取绝对路径

——5,lastModified()//最后修改的时间

——6,length()//路径名表示的文件的长度


6,其他:

——1,File[]  listRoots()//获得有效盘符对象

——2,String[]  list()//获得当前路径下所有文件名称,当前目录必须是文件夹

——3,File[]  listFiles()//获得当前路径下所有文件对象



演示代码1:

原本文件:



代码:

import java.io.*;class FileDemo1{public static void main(String[] args) throws IOException//createNewFile会抛出IOException{File f1=new File("a.txt");File f2=new File("f:\\Java\\practice\\File");File f3=new File("f:"+File.separator+"Java"+File.separator+"practice\\File\\a");File f4=new File("haha.txt");File f5=new File("hehe.txt");File f6=new File("hh\\mm\\nn");System.out.println("f3 : "+f3.getPath());System.out.println("f1 : "+f1.getPath());//获取相对路径System.out.println("f1 : "+f1.getAbsolutePath());//获取绝对路径System.out.println("f1 : "+f1.exists());f1.delete();//删除a.txtSystem.out.println("f1 : "+f1.exists());System.out.println("f4_file: "+f4.isFile());System.out.println("f4_dir: "+f4.isDirectory());f4.createNewFile();//建立文件System.out.println("f4_file: "+f4.isFile());System.out.println("f4_dir: "+f4.isDirectory());f5.mkdir();//虽然路径有后缀,但是生成文件夹f6.mkdirs();//生成多层文件夹}}/*结果:f3 : f:\Java\practice\File\a  证明separator等同于'\'f1 : a.txt   f1 : F:\Java\practice\File\a.txtf1 : truef1 : falsef4_file: falsef4_dir: falsef4_file: truef4_dir: false*/

修改后文件:


其中hh文件夹中还有多层文件夹


演示代码2:

File目录:



代码:

import java.io.*;class FileDemo2 {public static void sop(Object obj){System.out.println(obj);}public static void main(String[] args) {File[] farr=File.listRoots();File f=new File("f:\\Java\\practice\\File");String[] fs=f.list();File[] fa=f.listFiles();for(File arr : farr){sop(arr.getPath());}sop("=====================================");for(String str:fs){sop(str);}sop("=====================================");for(File arr:fa){sop(arr.getAbsolutePath());}}}/*结果:C:\D:\E:\F:\G:\H:\=====================================abb.txtc.txtd.txtFileDemo1.classFileDemo1.javaFileDemo1.java.bakFileDemo2.classFileDemo2.javaFileDemo2.java.bakhaha.txthehe.txthh=====================================f:\Java\practice\File\af:\Java\practice\File\bf:\Java\practice\File\b.txtf:\Java\practice\File\c.txtf:\Java\practice\File\d.txtf:\Java\practice\File\FileDemo1.classf:\Java\practice\File\FileDemo1.javaf:\Java\practice\File\FileDemo1.java.bakf:\Java\practice\File\FileDemo2.classf:\Java\practice\File\FileDemo2.javaf:\Java\practice\File\FileDemo2.java.bakf:\Java\practice\File\haha.txtf:\Java\practice\File\hehe.txtf:\Java\practice\File\hh*/


==============================================================================================================================

文件的筛选:


在上面的学习中,可以把一个文件夹中的所有文件都输出,但是,如果只想输出其中一种文件该怎么做呢,比如我只想要java文件


这时,就要用到筛选器:


1,String[]  list(FilenameFilter  filter)

2,File[]  listFiles(FilenameFilter  filter)


不难看出,所谓的筛选器,就是FilenameFilter对象,而FilenameFilter是一个接口,因此,我们需要先建立一个类去实现该接口,然后在建立对象传入到函数中,这种形式类似于集合中的比较器的使用


代码演示:

文件夹:



代码:

import java.io.*;class MyFilter implements FilenameFilter{public boolean accept(File dir,String name){return name.endsWith(".java");//根据后缀是否为java来筛选}}class FilenameFilterDemo {public static void main(String[] args) {File dir=new File("F:\\Java\\practice\\File");File[] farr=dir.listFiles(new MyFilter());//传入筛选器for(File s:farr){System.out.println(s.getAbsolutePath());}}}/*结果:F:\Java\practice\File\FileDemo1.javaF:\Java\practice\File\FileDemo2.javaF:\Java\practice\File\FilenameFilterDemo.java*/

















0 0
原创粉丝点击