为什么这段代码返回false?
Path path = Paths.get("C:\\aaa\\bbb\\ccc");
Files.exists(path); // false!?
即使我从文件(存在)转换为它:
File file = new File("C:\\aaa\\bbb\\ccc");
file.exists(); // true!!!
Path path = file.toPath();
Files.exists(path); // still false!?
最佳答案
我能够在以下特定情况下重现此内容:
- 操作系统是 Windows(由路径语法暗示)
- 路径指的是一个目录
- 该目录是只读的,或者用户没有“列出文件夹内容”权限。
我在 Linux (Centos 6) 上对此进行了测试,即使更改目录上的文件模式(即 chmod -x/aaa/bbb/ccc
或 chmod -r/aaa/bbb/ccc
)
所以这似乎只发生在 Windows 上。 java.io
和 java.nio.file
在 Windows 上实现文件权限存在性测试的方式肯定存在一些差异。
检查目录的权限。
这可能是一个值得报告的错误。
关于java - Files.exists(path) 为假,但 file.exists() 为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282130/