Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
你有一个表示文件或目录的 Path
实例,但该文件是否存在于文件系统中?它可读吗?可写吗?可执行文件?
Path
类中的方法是 syntactic (语法的),这意味着它们在 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)) { // Logic when the paths locate the same file }