Java 为什么相对化会产生“相对化”/文件名;当两个文件位于同一文件夹中时?
我知道至少已经回答了两个类似的问题,但我仍然难以理解Java 为什么相对化会产生“相对化”/文件名;当两个文件位于同一文件夹中时?,java,path,nio,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.txt和f2.txt),为什么re
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
),为什么relatize()
分别产生。/f2.txt
和。/f1.txt
?。/
从哪里来的?我的意思是,符号。/
使您转到当前所在文件夹的父文件夹,对吗?因此,p1.relatize(p2)
生成结果。/f2.txt
基本上是说“要查找f2.txt
请跳出当前文件夹”。但这没有任何意义。复制类似的文件夹结构并使用cd
导航,我无需添加。/
即可访问当前所在文件夹中的文件。我只需要输入文件名。请解释一下,让我举个例子来帮助你。首先,让我提一下,您不关心父文件夹
您关心的是两条路径之间的相对路径。换句话说,如何从第一条路径访问第二条路径
例如
输出为:
。/../folder3/file2
。/../folder2/file
对于您的示例,如果您有f1,并且您希望f2的相对路径从../到达f2,反之亦然。嗯,是的,您的示例很有意义:“要进入
文件2
文件夹,请退出到父文件夹文件夹2
(这是一个。/
),然后退出到父文件夹文件夹1
(第二个。//code>)。您现在处于folder1
。从这里输入folder3
,然后在内部输入file2
。因此,。/../folder3/file2
如果逻辑性很强。但是我仍然没有弄清楚在使用时访问同一文件夹中的文件的逻辑。我认为如果我们用Linux的方式来考虑,那么这就没有意义了。但在文件结构方面,它有点像。在我看来,当我阅读java文档时,从文档:,它似乎可以用来“撤消”路径解析()
,如示例所示:p.relatize(p.resolve(q)).equals(q)
尝试使用路径p1=Path.get(./”
和Path p2=Path.get(“f2.txt”)代码>。你可能会注意到原因。
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)));