Java 中的 File 类是 java.io 包中的一个类,用于表示文件和目录路径名的抽象表示。它提供了一些方法来操作文件和目录
一、File的创建
1.1、绝对路径
绝对路径是指从文件系统的根目录开始定位文件或目录的完整路径。它通常以根目录符号开始,在 Windows 系统中是盘符 (如 C:),在 Unix/Linux 系统中是斜杠 (/)。
特点:
- 从根目录开始,路径是唯一的。
- 无论当前工作目录是什么,都可以使用绝对路径准确定位文件或目录。
例如:
- Windows: C:\Users\John\Documents\report.txt
- Unix/Linux: /home/john/documents/report.txt
1.2、相对路径
相对路径是指相对于当前工作目录定位文件或目录的路径。它不以根目录符号开始,而是相对于当前目录进行路径解析。
特点:
- 依赖于当前工作目录,路径的解释可能会因为当前目录的不同而不同。
- 相对路径更简短,适用于程序中经常变动的目录结构。
例如:
- 当前目录为 C:\Users\John\Documents,相对路径 report.txt 指向 C:\Users\John\Documents\report.txt
- 当前目录为 /home/john/documents,相对路径 …/report.txt 指向 /home/john/report.txt
1.3、File的构造方法
三种构造方法的使用,虽然有三种构造方法,但是这三种构造方法所构建的对象都是同一个
// 1. 根据字符串表示的路径创造File对象
String path = "C:\\Users\\password123456\\Desktop\\资料\\demo1.txt";
File file = new File(path);
System.out.println(file);//C:\Users\password123456\Desktop\资料
// 2.根据父路径名字符串和子路径名字符串创建文件对象
// 父路径:C:\Users\password123456\Desktop\资料
// 子路径:demo1.txt
String fatherPath = "C:\\Users\\password123456\\Desktop\\资料";
String childPath = "demo1.txt";
File file1 = new File(fatherPath,childPath);
System.out.println(file1);//C:\Users\password123456\Desktop\资料\demo1.txt
// 3. 根据父路径对应文件对象和子路径名字符串创建京件对象斯
File file2 = new File("C:\\Users\\password123456\\Desktop\\资料");
File file3 = new File(file2,childPath);
System.out.println(file3);//C:\Users\password123456\Desktop\资料\demo1.txt
二、File的判断、获取方法
方法名称 | 说明 |
---|---|
public boolean isDirectory() | 判断此路径名表示的File是否为文件夹 |
public boolean isFile() | 判断此路径名表示的File是否为文件 |
public boolean exists() | 判断此路径名表示的File是否存在 |
public long length() | 返回文件的大小(字节数量) |
public string getAbsolutePath() | 返回文件的绝对路径 |
public string getPath() | 返回定义文件时使用的路径 |
public string getName() | 返回文件的名称,带后缀 |
public long lastModified() | 返回文件的最后修改时间(时间毫秒值) |
String path = "C:\\Users\\password123456\\Desktop\\资料\\demo1.txt";
String path2 = "C:\\Users\\password123456\\Desktop\\资料";
File file = new File(path);
File file2 = new File(path2);
//public boolean isDirectory() 判断此路径名表示的File是否为文件夹
System.out.println(file.isDirectory());// false
System.out.println(file2.isDirectory());// true
// public boolean isFile() 判断此路径名表示的File是否为文件
System.out.println(file.isFile());// true
// public boolean exists() 判断此路径名表示的File是否存在
System.out.println(file.exists());// true
//public long length() 返回文件的大小(字节数量)
System.out.println(file.length());// 0
//public string getAbsolutePath() 返回文件的绝对路径
System.out.println(file.getAbsoluteFile());// C:\Users\password123456\Desktop\资料\demo1.txt
//public string getPath() 返回定义文件时使用的路径
System.out.println(file.getPath());// C:\Users\password123456\Desktop\资料\demo1.txt
//public string getName() 返回文件的名称,带后缀
System.out.println(file.getName());// demo1.txt
//public long lastModified() 返回文件的最后修改时间(时间毫秒值)
System.out.println(file.lastModified());// 1718950374967
三、File的创造删除方法
方法名称 | 说明 |
---|---|
public boolean createNewFile() | 创建一个新的空的文件 |
public boolean mkdir() | 创建单级文件夹 |
public boolean mkdirs() | 创建多级文件夹 |
public boolean delete() | 删除文件、空文件夹 |
createNewFile
:创建一个新的空的文件:
- 如果当前路径表示的文件是不存在的,则创建成功,方法返回true。如果当前路径表示的文件是存在的,则创建失败,方法返回false。
- 如果父级路径是不存在的,那么方法会有异常I0Exception
createNewFile
方法创建的一定是文件,如果路径中不包含后缀名,则创建一个没有后缀的文件
// 1. 根据字符串表示的路径创造File对象
String path = "C:\\Users\\password123456\\Desktop\\资料\\File类\\a.txt";
File file = new File(path);
//public boolean createNewFile() 创建一个新的空的文件
boolean newFile = file.createNewFile();
System.out.println(newFile);
//public boolean mkdir() 创建单级文件夹
File file1 = new File("C:\\Users\\password123456\\Desktop\\资料\\File类\\aaa");
boolean mkdir = file1.mkdir();
System.out.println(mkdir);// true
//public boolean mkdirs() 创建多级文件夹
File file2 = new File("C:\\Users\\password123456\\Desktop\\资料\\File类\\aaa\\bbb\\ccc");
boolean mkdirs = file2.mkdirs();
System.out.println(mkdirs);//true
//public boolean delete() 删除文件、空文件夹
File file3 = new File("C:\\Users\\password123456\\Desktop\\资料\\File类\\aaa\\bbb\\ccc");
boolean delete = file3.delete();
System.out.println(delete);//true
四、获取并且遍历
方法名称 | 说明 |
---|---|
public static File[] listRoots() | 列出可用的文件系统根 |
public string[] list() | 获取当前该路径下所有内容 |
public string[] list(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
public File[] listFiles() | 获取当前该路径下所有内容 |
public File[] listFiles(FileFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
public File[] listFiles(FilenameFilter filter) | 利用文件名过滤器获取当前该路径下所有内容 |
== 最为重要的就是:public File[] listFiles() ==
我们来看看演示代码
String path = "C:\\Users\\password123456\\Desktop\\资料\\File类";
File file = new File(path);
File[] files = file.listFiles();
for (File file1 : files) {File absoluteFile = file1.getAbsoluteFile();System.out.println(absoluteFile);
}
接下来看看文件中以及输出语句
- 当调用者File表示的路径不存在时,返回null
- 当调用者File表示的路径是文件时,返回null
- 当调用者File表示的路径是一个空文件夹时,返回一个长度为0的数组
- 当调用者File表示的路径是一个有内容的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回
- 当调用者File表示的路径是一个有隐藏文件的文件夹时,将里面所有文件和文件夹的路径放在File数组中返回包含隐藏文件