File类概述和构造方法、File的创建功能、File类的判断和获取功能、删除功能、附加File(递归遍历)
File
所在包:java.io
public class File
implements Serializable,Comparable<File>
概述:
- File是文件和目录路径名的抽象表示
- 文件和目录是可以通过File封装成对象的
- 对于File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径名而已,它可以是存在的,也可以是不存在的
- 将来是要通过具体的操作把这个路径的内容转换为具体存在的
File的三个构造方法:
方法名 | 作用 |
---|---|
File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的File实例 |
File(String parent,String child) | 从父路径名字符串给子路径名字符串创建新的File实例 |
File(File parent,String child) | 从父抽象路径名和子路径名字符串创建新的File实例 |
代码示例:
方法一:
File f1=new File("E:\\test001\\java.txt");
System.out.println(f1);
方法二:
File f2=new File("E:\\test001","java.txt");
System.out.println(f2);
方法三:
File f3=new File("E:test001");
File f4=new File(f3,"java.txt");
System.out.println(f4);
输出结果:
true
true
true
如果第二次运行则全部输出false
//因为文件已经创建完毕了 无法再次创建 所以第二次返回false
File的创建功能
创建方法名 | 作用 |
---|---|
public boolean createNewFile() | 当具有该名称的文件不存在时,创建一个由该抽象路径名命名的新空文件 |
public boolean mkdir() | 创建由此抽象路径名命名的目录 |
public boolean mkdirs() | 创建由此抽象路径名命名的目录,当创建的父目录不存在时一同创建了 |
代码示例:
方法一:
File f1 = new File("E:\\test001\\java.txt");
System.out.print(f1.createNewFile());
方法二:
File f2 = new File("E:\\test001\\javase");
System.out.print(f2.mkdir());
方法三:
File f3 = new File("E:\\test002\\javase");
System.out.print(f3.mkdirs());
File类的判断和获取功能
方法名 | 作用 |
---|---|
boolean isDirectory() | 此抽象路径名表示的File是否为目录 |
boolean isFile() | 此抽象路径名表示的File是否为文件 |
boolean exists() | 此抽象路径名表示的File是否存在 |
String getAbsolutePath() | 返回此抽象路径名表示的File的绝对路径名字符串 |
String getPath() | 返回此抽象路径名的字符串形式 |
String getName() | 返回此抽象路径名表示的文件或目录名称 |
String[] list() | 返回目录中的文件和目录的名称并转换为字符串数组 |
File[] listFile() | 返回抽象路径名表示的目录中的文件和目录的File对象数组 |
boolean delete() | 删除由此抽象路径名表示的文件或目录 |
代码示例:
File f1 = new File("test001\\java.txt");
System.out.print(f1.isDirectory());
//是否为目录 false
System.out.print(f1.isFile());
//是否为文件 true
System.out.print(f1.exists());
//测试抽象路径名表示(f1)中的File是否存在 true
System.out.print(f1.getAbsolutePath());
//返回抽象路径名(f1)的绝对路径名 就是电脑中f1所在的位置
System.out.print(f1.getPath());
//返回抽象路径名(f1)字符串 就是构造函数中的("test001\\java.txt")
System.out.print(f1.getName());
//返回抽象路径名表示的文件或目录名称 java.txt
遍历文件目录下的所有文件方法
String[] strArray = f1.list();
//返回文件名中的文件名和目录名并存入数组
for(String str : strArray){
System.out.print(str);
//将文件夹中所有文件名输出
}
File[] fileArray = f1.listFiles();
//返回文件名中的文件名和目录名并存入数组
for(File file : fileArray){
System.out.print(file.getName);
//将文件夹中所有文件名输出
}
删除抽象路径名表示的文件或目录
File f1 = new File("E:\\test001\\java.txt");
System.out.print(f1.delete());
File f2 = new File("E:\\test001\\javase");
System.out.print(f2.delete());
注意事项:
如果一个目录中有内容,不能直接删除,应该先删除目录中的内容,最后才可以删除目录
绝对路径和相对路径的区别
- 绝对路径:完整的路径名,不需要任何其他信息就可以定位它所表示的文件。例如:E\ \test001\ \javase\ \java.txt
- 相对路径:必须使用取自其他路径名的信息进行解释。例如:javase\ \java.txt
File递归遍历案例
代码示例:
public static void main(String[] args){
File f1 = new File("C:\\Users\\23353\\Desktop\\录制+图+密码");
show(f1);
}
public static void show(File list){
File[] f = list.listFiles();
if(f != null){
for(File file : f){
if(file.isDirectory()){
show(file);
}else{
System.out.println(file.getName());
}
}
}
}