Files.exists(path)为false,但file.exists()为true

sik*_*art 3 java

为什么此代码返回false?

Path path = Paths.get("C:\\aaa\\bbb\\ccc");
Files.exists(path); // false!?
Run Code Online (Sandbox Code Playgroud)

即使当我从文件(存在)转换为它时:

File file = new File("C:\\aaa\\bbb\\ccc");
file.exists(); // true!!!
Path path = file.toPath();
Files.exists(path); // still false!?
Run Code Online (Sandbox Code Playgroud)

Jim*_*son 5

在以下特定情况下,我能够重现此内容:

  1. 操作系统为Windows(由路径语法表示)
  2. 路径指向目录
  3. 该目录是只读目录,或者用户没有“列出文件夹内容”权限。

我在Linux(Centos 6)上进行了测试,即使更改目录(即chmod -x /aaa/bbb/cccchmod -r /aaa/bbb/ccc)上的文件模式,也无法重现它

因此,这似乎仅在Windows上发生。在Windows上,关于文件权限的方式java.iojava.nio.file实现存在性测试之间必须存在一些差异。

检查目录的权限。

可能是值得报告的错误。