当两个文件都在同一个文件夹中时,为什么相对化会产生“../file_name”?

时间:2021-03-26 13:31:39

标签: java path nio

我知道至少已经回答了两个类似的问题,但我仍然难以理解 relativize() 方法。

Path p1 = Paths.get("f1.txt");
Path p2 = Paths.get("f2.txt");
out.println(p1.relativize(p2)); // ../f2.txt
out.println(p2.relativize(p1)); // ../f1.txt

如果我在同一个目录中有两个文件(f1.txtf2.txt),为什么 relativize() 分别产生 ../f2.txt../f1.txt../ 哪里来的?我的意思是,符号 ../ 使您转到当前所在文件夹的父文件夹,对吗?所以 p1.relativize(p2) 产生结果 ../f2.txt 基本上是说“要找到 f2.txt 到当前文件夹之外”。但这没有任何意义。重现类似的文件夹结构并使用 cd 导航我不需要添加 ../ 来访问我当前所在的同一文件夹中的文件。我只需要输入文件名。请解释

1 个答案:

答案 0 :(得分:-1)

让我举个例子来帮助你。首先,让我提一下您不关心父文件夹。

您关心两条路径之间的相对路径。换句话说,如何从第一个路径访问第二个路径。

例如

Path path = Paths.get("/folder1/folder2/file");
Path path2 = Paths.get("/folder1/folder3/file2");
System.out.println((path.relativize(path2)));
System.out.println((path2.relativize(path)));

输出为: ../../folder3/file2 ../../folder2/file

对于您的示例,如果您有 f1 并且您想要 f2,则相对路径从 ../ 到达 f2,反之亦然。

相关问题