File类
1,File类概述
- File类的对象代表操作系统的文件(文件、文件夹)
- File类在java.io.File包下。
- File类提供了诸如:创建文件对象代表文件,获取文件信息(大小、修改时间)、删除文件、创建文件(文件夹)等功能
2,File的创建
构造器
方法名 | 说明 |
---|---|
public File(String pathname) |
根据文件路径创建文件对象 |
public File(String parent, String child) |
以parent 为父路径,child 为子路径创建File对象。 |
public File(File parent, String child) |
根据一个父File 对象和子文件路径创建File 对象 |
==注意:==
- File对象可以定位文件和文件夹
- File封装的对象仅仅是一个==路径名==,这个路径可以是存在的,也可以是不存在的。
路径分隔符
路径中的每级目录之间用一个路径分隔符隔开。
使用"\"
来表示分隔符,但因为"\"
是转义字符,所以需要"\\"
来表示分隔符使用
"/"
来表示分隔符,不需要转移使用
"File.separator"
来表示分隔符File类提供了一个常量:
public static final String separator
,它就代表分隔符
File file1 = new File("D:\\桌面\\workspace\\File\\ioFile\\src\\data.txt"); // 绝对路径
File file3 = new File("ioFile\\src\\data.txt"); // 相对路径
File file3 = new File("ioFile/src/data.txt"); // 分隔符
File file4 = new File("ioFile" + File.separator + "src" + File.separator + "data.txt"); // separator分隔符
绝对路径和相对路径
- 绝对路径:固定的路径,是从盘符开始的
相对路径:是相对于某个位置开始寻找
main
中的相对路径是相对==当前工程==test
中的相对路径是相对==当前模块==
3,File的常用方法
3.1 判断文件类型
方法名称 | 说明 |
---|---|
public boolean isDirectory() |
判断此路径名表示的File是否为文件夹 |
public boolean isFile() |
判断此路径名表示的File是否为文件 |
public boolean exists() |
判断此路径名表示的File是否存在 |
File file = new File("ioFile\\src\\data.txt");
boolean f1 = file.isAbsolute();
System.out.println(f1); // false
boolean f2 = file.isFile();
System.out.println(f2); // true
boolean f3 = file.exists();
System.out.println(f3); // true
3.2 获取文件信息
方法名称 | 说明 |
---|---|
public long length() |
返回文件的大小(字节数量) |
public String getAbsolutePath() |
返回文件的绝对路径 |
public String getPath() |
返回定义文件时使用的路径 |
public String getName() |
返回文件的名称,带后缀 |
public long lastModified() |
返回文件的最后修改时间(时间毫秒值) |
File file = new File("ioFile\\src\\data.txt");
long length = file.length();
System.out.println(length); // 6
String path = file.getAbsolutePath();
System.out.println(path); // D:\桌面\workspace\File\ioFile\src\data.txt
String path1 = file.getPath();
System.out.println(path1); // ioFile\src\data.txt
String name = file.getName();
System.out.println(name); // data.txt
long time = file.lastModified();
System.out.println(time); // 1667986220731
3.3 文件创建
方法名称 | 说明 |
---|---|
public boolean createNewFile() |
创建一个新的空的文件 |
public boolean mkdir() |
只能创建一级文件夹 |
public boolean mkdirs() |
可以创建多级文件夹 |
File file1 = new File("ioFile\\src\\data.txt");
boolean newFile1 = file1.createNewFile();
System.out.println(newFile1); // false 已经存在
File file2 = new File("ioFile\\src\\data2.txt");
boolean newFile2 = file2.createNewFile();
System.out.println(newFile2); // true 创建成功
File file3 = new File("ioFile\\src\\createFile");
boolean mkdir1 = file3.mkdir();
System.out.println(mkdir1); // true
File file4 = new File("ioFile\\src\\createFile\\createFile2");
boolean mkdir2 = file4.mkdir();
System.out.println(mkdir2); // false mkdir不能创建多级目录
File file5 = new File("ioFile\\src\\createFile\\createFile2");
boolean mkdirs1 = file5.mkdirs();
System.out.println(mkdirs1); // true mkdirs可以创建多级目录
3.4 文件删除
方法名称 | 说明 |
---|---|
public boolean delete() |
删除由此抽象路径名表示的文件或空文件夹 |
boolean delete1 = file2.delete();
System.out.println(delete1); // true
==注意:==
delete
方法默认只能删除文件和==空文件夹==delete
方法直接删除不走回收站- 文件在使用时也可以强制删除
3.5 遍历功能
方法名称 | 说明 |
---|---|
public String[] list() |
获取当前目录下所有的"一级文件名称"到一个字符串数组中去返回。 |
public File[] listFiles() |
获取当前目录下所有的"一级文件对象"到一个文件对象数组中去返回 |
==ListFiles
注意事项:==
- 当文件不存在时或者代表文件时,返回null
- 当文件对象代表一个空文件夹时,返回一个长度为0的数组
- 当文件对象是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
- 当文件对象是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回,包含隐藏文件
- 当没有权限访问该文件夹时,返回null
4, 文件搜索案例
描述:在一个盘符下,搜索一个名字为XXX的文件
分析:
- 先定位出的应该是一级文件对象
- 遍历全部一级文件对象,判断是否是文件
- 如果是文件,判断是否是自己想要的
- 如果是文件夹,需要继续递归进去重复上述过程
public static void searchFile(File dir, String fileName){
if(dir == null || dir.isFile()) {
System.out.println("输入的非法文件夹!");
}else{
File[] files = dir.listFiles();
if(files != null && files.length > 0){
for (File file : files) {
if(file.isFile()){
if(file.getName().contains(fileName)){
System.out.println("找到了" + file.getAbsolutePath());
return;
}
}else{
searchFile(file, fileName);
}
}
}
}
}