java.nio.file.Files类中exists()方法的行为

时间:2016-03-01 13:39:19

标签: java nio

我正在测试是否存在使用Java nio包中的新类的文件,但我得到的结果似乎是一个错误:

以下代码:

Path p = Paths.get("");
System.err.println("[" + p.getFileName().toString() + "]");
System.err.println("[" + p.getParent() + "]");
System.err.println(Files.exists(p));

产生输出:

[]
[null]
true

为什么打印成真?这是一个错误还是预期的行为?

2 个答案:

答案 0 :(得分:1)

""是您执行应用的路径。

试试这个:

System.err.println(p.toFile().getAbsolutePath());

然后你会看到你在哪里。

答案 1 :(得分:0)

来自Path类的javadoc:

  

"如果Path只包含一个为空的名称元素,则该路径被视为空路径。使用空路径访问文件等同于访问文件系统的默认目录。"

您已经创建了一个空路径,并且exists()调用正在测试文件系统的"默认目录"存在。确实如此。

您所看到的是"预期的行为"。

请注意"默认目录"可能意味着不同的东西取决于主机平台,但在基于UNIX的系统和Windows上,它意味着"当前目录"对于JVM。