本教程是针对JDK 8编写的。本页面描述的示例和实践不利用后续版本引入的改进,并且可能使用已不再可用的技术。
请参阅Java语言变更以了解Java SE 9及后续版本中的更新语言特性的概要。
请参阅JDK发布说明以获取有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
您有一个表示文件或目录的 Path
实例,但是该文件在文件系统中存在吗?它可读吗?可写吗?可执行吗?
Path
类中的方法是语法的,意味着它们对 Path
实例进行操作。但最终您必须访问文件系统来验证特定的 Path
是否存在或不存在。您可以使用 exists(Path, LinkOption...)
和 notExists(Path, LinkOption...)
方法来实现。注意,!Files.exists(path)
不等同于 Files.notExists(path)
。在测试文件存在性时,有三种可能的结果:
如果 exists
和 notExists
都返回 false
,则无法验证文件的存在性。
要验证程序是否能够按需访问文件,可以使用 isReadable(Path)
、isWritable(Path)
和 isExecutable(Path)
方法。
下面的代码片段验证了特定文件是否存在,并且程序能够执行该文件。
Path file = ...; boolean isRegularExecutableFile = Files.isRegularFile(file) & Files.isReadable(file) & Files.isExecutable(file);
TOCTTOU
(发音为 TOCK-too)。
当使用符号链接的文件系统时,可能会有两个不同的路径定位到同一个文件。isSameFile(Path, Path)
方法用于比较两个路径,以确定它们是否在文件系统上定位到同一个文件。例如:
Path p1 = ...; Path p2 = ...; if (Files.isSameFile(p1, p2)) { // 当路径定位到同一文件时的逻辑 }