【发布时间】:2020-01-18 18:11:57
【问题描述】:
给定两个 Path 对象 p1 和 p2(不一定指向存在的文件),我如何检查底层路径是否相等?即,Path 对象产生于
/path/to/something
/path/to/../fdsfaf/something
应该(例如)被视为等效/相同。
我目前的方法是
- 使用 Files.isSameFile
- 首先对每个 Path 对象应用 .normalize(),然后在其中一个新 Path 上使用 .equals。
这两种方法会导致相同的结果吗?我已经尝试阅读文档,我目前的猜测是结果应该是相同的。
编辑: 多人建议以下文章回答我的问题。我声称这是不正确的,因为它只解释了为什么 Files.isSameFile() 与 Path#equals() 不同。问题(及其答案)不考虑 .normalize() 是否相关。 Java NIO - How is Files.isSameFile different from Path.equals
【问题讨论】:
-
这两种方法会导致相同的结果吗?您是否测试过?无需猜测。
-
我在问我是否可以相信(至少根据定义)结果将是相同的。我的问题是(也)我对 Javadoc 的理解是否正确。
-
是的,我已经读过了。但它没有回答我的问题。
-
我只是写了它没有回答我的问题。 :-) 这个问题(包括它的答案)与 .normalize() 的使用无关