Nik*_*las 2 java path java-8 nio2 java-11
为什么该方法relativize在java-8和java-11上的行为不同?
Path path1 = Paths.get("/a/./b/../image.png");
Path path2 = Paths.get("/a/file.txt");
Path path = path1.relativize(path2);
System.out.println(path);
Run Code Online (Sandbox Code Playgroud)
两个版本的 JavaDoc 描述是相同的。我觉得java-11方式对我来说是正确的行为:
path1:/a/./b/../image.png归一化到/a/b/../image.png哪个归一化到/a/image.pngpath2: /a/file.txt/a/image.png并且/a/file.txt是../file.txt问题
如何在Java的8来计算应该呢?它不会使路径正常化吗?我不明白如何从 head得到结果。
为什么这两个版本之间存在根本没有记录的差异?
也许这个错误会回答你的问题:https : //bugs.openjdk.java.net/browse/JDK-8066943
这影响了包含 . 或 .. 并针对 Java 9 进行了修复。这就是为什么您会看到 8 和 11 之间的差异。