一,文件类File类
- File类构造方法
- 第一种:File(String path) ,path指明新创建File对象对应的文件或目录的路径,如:
File f1=new File("C:/myProgram/Java"); //绝对路径下新建文件,指定目录
File f2=new File(/myProgram/Java"); //相对路径下新建文件,当前目录下的子目录myProgram
- 第二种:File(String path, String name) , path指定文件或目录路径,name指定文件或目录名
File f1=new File("/docs", "file.dat"); //相对路径为\docs,文件名为file.dat
- 第三种:File(String dir, String name) , dir指定已有的File对象的路径,name指定该文件名或目录名
String sdir="myProgram"+System.dirSep+"Java";
String sfile="FileIO.data";
File Fdir=new File(sdir);
File Ffile=new File(Fdir, sfile);
- 创建与删除文件方法
- 创建文件:public boolean createNewFile(),创建一个新的空文件,其文件名命名为对应的抽象目录名;
- 重命名文件:public boolean renameTo(File newFile),当文件重命名成newFile对应的文件名;
- 删除文件:public void delete( );
- 创建目录:public boolean mkdir( );
- 获取文件或目录属性方法
- 判断文件或目录是否存在:public boolean exists( ) ,
- 判断是对象是否是有效文件:public boolean isFile( ),
- 判断是对象是否是有效目录:public boolean isDirectory( ),
- 获取文件的读写属性:public boolean canRead( ) , public boolean canWrite() ,
- 比较两文件或目录是否相同:public boolean equals(File f),
- 获取文件或目录路径:public String getPath(),
- 获取文件或目录名称:public String getName(),
- 获取文件的长度:public long length(),返回文件的字节数;
- 获取目录成员
- File类有一个Sting list[ ]()方法,可以将目录中所有的文件名保存在字符数组中,如
File f=new File("C:/jdk") //创建File类
String s[]=f.list(); //将jdk目录下所有的文件或目录名保存到s字符数组中
- 过滤文件名
- 通过创建一个实现FilenameFilter接口的类,在该类中编写需保留的文件名和后缀名的方法;
- FilenameFilter过滤器接口是实现文件过滤功能必须实现的接口;
class FilenameFilterDemo implements FilenameFilter{
private String name; //定义保留的文件名
private String ext; //定义保留的拓展名
public FilenameFilterDemo (String name ,String ext){ //过滤器构造方法,入参是保留文件名和后缀名
this.name=name;
this.ext=ext;
}
public boolean accept(File dir, String filename){ //accept成员方法是过滤的核心函数
boolean fString=true;
if(name!=null) fString &=filename.startsWith(name);
if(ext!=null) fString &=filename.endsWith("."+ext);
return fString;
}
}
- 对创建的过滤器类实例化对象后,就要用File类实例对象调用list方法,并将过滤器类对象作为list函数的入口参数,此时list在获取字符串数组目录中所有的成员时,会自动过滤掉不符合name和ext的文件名;如,
FilenameFilter x=new FilenameFilterDemo("java","exe"); //新建过滤器对象,设置保留以java开头,并且以.exe结尾的文件
File f=new File("c:/jdk/bin"); //新建File类对象,设置目录为bin
String s=f.list(x); //将过滤后的文件名字符串数组存放于s中