有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java文件。exists(path)为false,但为file。exists()为true

为什么这个代码返回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!?

共 (1) 个答案

  1. # 1 楼答案

    在以下具体情况下,我能够重现这一点:

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

    我在Linux(Centos 6)上测试了这一点,即使在更改目录(即chmod -x /aaa/bbb/cccchmod -r /aaa/bbb/ccc)上的文件模式时也无法复制它

    因此,这似乎只发生在Windows上。关于Windows上的文件权限,java.iojava.nio.file如何实现存在性测试,两者之间肯定存在一些差异

    检查目录上的权限

    这可能是一个值得报告的bug