Java NIO - Files.isSameFile与Path.equals的不同之处

8 java nio java-7

我无法理解java.nio.file.Files.isSameFile方法与java.nio.file.Path.equals方法的不同之处.

有人可以告诉他们有什么不同吗?

fge*_*fge 18

他们是非常不同的.

例如:

final Path p1 = Paths.get("/usr/src");
final Path p2 = Paths.get("/usr/../usr/src");

p1.equals(p2); // FALSE
Files.isSameFile(p1, p2); // true

final Path p1 = fs1.getPath("/usr/src");
final Path p2 = fs2.getPath("/usr/src");

p1.equals(p2); // FALSE
Run Code Online (Sandbox Code Playgroud)

当且仅在以下情况下,A Path等于另一个Path:

  • 他们有同样的FileSystem;
  • 他们有相同的根元素;
  • 它们具有相同的名称元素.

这与Files.isSameFile()访问文件系统和尝试查看两个是否Path指向相同的文件系统资源非常不同.