File类
java中File类(java.io.File)表示操作系统中的文件或者目录,也就是我们可以使用File操作硬盘上的文件或者目录进行创建或者删除。
File可以描述文件或目录的名字,大小等信息,但不能对文件的内容进行操作!
其构造器是有参的。
1)关于路径:不同操作系统差异很大,Linux和Windows就不同!建议使用相对路径
不建议用绝对路径。
2)“.”代表的路径:当前目录(项目所处的目录).
File.separator:常量,目录分隔符 根据系统自动时别哪种分隔符。
3)创建对象并不意味着硬盘对应路径就有该文件,值是在内存中创建了该对象
取代表路径指定的文件。这个路径可能也不存在。
File file=new File("."+File.separator+"data.dat");// 效果为./data.dat
4)createNewFile()中有throws声明,要求强制捕获异常!
5)新建文件或目录:
①boolean mkdir():只能在已有的目录基础上创建目录。
②boolean mkdirs():会创建所有必要的父目录(不存在的自动创建)并创建该目录。
③boolean createNewFile():创建一个空的新文件。
6)创建目录中文件的两种方式:
①直接指定data.dat需要创建的位置,并调用createNewFile(),前提是目录都要存在!
②先创建一个File实例指定data.dat即将存放的目录,若该目录不存在,则创建所有不存在的目录,
再创建一个File实例,代表data.dat文件,创建是基于上一个代表目录的File实例的。
使用File(File dir,String fileName)构造方法创建File实例,然后再调用createNewFile():
在dir所代表的目录中表示fileName指定的文件。
7)查看文件或目录属性常用方法
①long length():返回文件的长度。
②long lastModified():返回文件最后一次被修改的时间。
③String getName():返回文件或目录名。
④boolean exists():是否存在。
⑤boolean isDirectory():是否是目录。
⑥boolean canWrite():是否可以写入、修改。
⑦File[] listFiles():获取当亲目录的子项(文件或目录)
⑧String getPath():返回路径字符串。
⑨boolean isFile():是否是标准文件。
⑩boolean canRead():是否可以读取。
eg.1
递归法:
1)遍历当前目录上所以文件
public static void listDirectory(File dir) {
File[] files=dir.listFiles();
if(files!=null&&files.length>0){//判断子项数组有项
for(File file:files){//遍历该目录下的所有子项
if(file.isDirectory()){//若子项是目录
listDirectory(file);//不到万不得已,不要使用递归,非常消耗资源
}else{
System.out.println("文件:"+file);//有路径显示,输出File的toString()
file.getName();//不显示路径
}
}
}
}
2)遍历删除当前文件下的所有文件夹文件
public static void delete(File dir) {
File[] files = dir.listFiles();
if(files!=null) {
for(File file:files) {
if(file.isFile()) {
file.delete();
}else {
delete(file);
}
}
}
dir.delete();
}
8)删除一个文件:boolean delete():
①直接写文件名作为路径和"./data.dat"代表相同文件,也可直接写目录名,但要注意第2条。
②删除目录时:要确保该目录下没有任何子项后才可以将该目录删除,否则删除失败!
9)FileFilter:文件过滤器
是一个接口,不能被实例化,可以规定过滤条件,重写accept()方法
FileFilter filter = new FileFileter(){
public boolean accept(File file){
return file.getName().endsWith(".txt")//按照文件后缀过滤
}
}