gpt4 book ai didi

java - 无法获取两个文件之间的正确相对路径,仅当一个路径是文件而另一个路径是目录时,这是正常的预期行为吗?

转载 作者:太空宇宙 更新时间:2023-11-04 06:49:48 24 4
gpt4 key购买 nike

<小时/>

编辑:

我以不同的方式看待这个 ../,并在心里附上 ../,其目录路径已经带有目录斜杠(因此目录名 +/+ ../),这会将一个目录指向太远的位置,但现在我发现在这种情况下,使用目录名 + ../实际上是正确的。

<小时/>

我无法获得两个文件之间的正确相对路径,只有当一个路径是文件而另一个路径是目录时,这是 Path.relativize(Path) 的正常预期行为? JavaDocs 提到它适用于 Path 对象,但没有比这更具体的了。

这是我的示例代码(在 Windows 上运行),其中包含对我期望输出的注释:

import java.nio.file.Path;
import java.nio.file.Paths;
public class PathsTest
{
public static void main(String[] args)
{
Path pathA = Paths.get("C:\\a\\b\\1.txt");
System.out.println(pathA);
Path pathB = Paths.get("C:\\a\\b\\2.txt");
System.out.println(pathB);
Path relativePathBetween = pathA.relativize(pathB);
System.out.println("rel: " + relativePathBetween);
// Outputs "..\2.txt" (for the last print here)
// Expected: "2.txt"

pathA = Paths.get("C:\\a\\b\\1.txt");
pathA = pathA.getParent(); // Obtaining parent here, so C:\a\b
System.out.println(pathA);
pathB = Paths.get("C:\\a\\b\\2.txt");
System.out.println(pathB);
relativePathBetween = pathA.relativize(pathB);
System.out.println("rel: " + relativePathBetween);
// Outputs: "2.txt"
// Expected: "2.txt"

// So why does pathA have to be a directory and not a file?
// Javadocs don't seem to mention that.
}
}

这是程序的完整输出:

C:\a\b\1.txt
C:\a\b\2.txt
rel: ..\2.txt
C:\a\b
C:\a\b\2.txt
rel: 2.txt

最佳答案

../ 表示父级,因此在第一个示例中它对应于 "C:\\a\\b\\ 并且您得到的结果看起来不错。

为什么您期望通过 Path pathB = Paths.get("C:\\a\\b\\1.txt\\2.txt"); 得到“2.txt”?

关于java - 无法获取两个文件之间的正确相对路径,仅当一个路径是文件而另一个路径是目录时,这是正常的预期行为吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23476378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com