首先介绍一下Files类
Files类:
Files 类是 Java NIO (New Input/Output) 中提供的一组静态方法,用于文件和目录的操作。
- 创建文件和目录
createFile(Path path): 创建一个新的文件。
createDirectory(Path path): 创建一个新的目录。
createDirectories(Path path): 创建一个新的目录以及所有不存在的父目录。
- 读取文件内容
readAllBytes(Path path): 读取文件的所有字节。
readAllLines(Path path): 读取文件的所有行,返回一个 List<String>。
newBufferedReader(Path path): 以 BufferedReader 形式读取文件。
- 复制文件、删除文件、写入文件等等
可以发现Files类的方法的参数都是Path路径对象,这主要是因为在Java NIO包下,也同时开发了Path与Paths这两个类,所以这里用Path对象去做参数是合理的,并且path对象相比路径字符串有着以下几个优点:
这里值得注意的是,我们在利用File类(java.io.File )创建文件对象时,通常将路径字符串参数传入构造函数,即new File (“/test/test.txt”)这样的形式,而非传入Path对象,这主要是因为一下几点原因:
(1)File类(java.io.File )它在 Java 1.0 版本中就已经存在。在那个时候,Java 还没有 Path 类。File 类主要通过字符串来表示路径。这也是为什么 File 类的构造函数接受的是字符串参数,而不是 Path 对象的最主要原因。
(2)然而,从 Java 7 开始,Java 引入了新的文件 I/O API,即 java.nio.file 包,其中包含了 Path 类,用于替代 File 类,提供更强大、更灵活的文件和路径处理功能。Path 类是由 java.nio.file.Paths 工具类创建的,提供了更现代和跨平台的路径操作方式。
(3)尽管如此,Java 仍然保留了 File 类的字符串构造函数,以确保向后兼容性。开发者可以继续使用他们熟悉的 API,而不会因为引入新的类而破坏现有代码。
Path与File之间的转换:
虽然 File 类的构造函数不直接接受 Path 对象,但可以很容易地将 Path 对象转换为 File 对象,方法是使用 Path 类的 toFile() 方法,同时File类也提供toPath()方法,用法如下:
String filePath = "/home/test/aaa.txt";
File file = new File(filePath);
File file1 = Paths.get(filePath).toFile;
Path path = file.toPath();