我知道至少已经回答了两个类似的问题,但我仍然难以理解 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.txt
和 f2.txt
),为什么 relativize()
分别产生 ../f2.txt
和 ../f1.txt
? ../
哪里来的?我的意思是,符号 ../
使您转到当前所在文件夹的父文件夹,对吗?所以 p1.relativize(p2)
产生结果 ../f2.txt
基本上是说“要找到 f2.txt
到当前文件夹之外”。但这没有任何意义。重现类似的文件夹结构并使用 cd
导航我不需要添加 ../
来访问我当前所在的同一文件夹中的文件。我只需要输入文件名。请解释
答案 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,反之亦然。