如果只有一个路径具有根组件,则无法构建相对路径.
为什么会这样?为什么不可能像这样重新激活:
Path path1 = Paths.get("/home/test");
Path path2 = Paths.get("home");
// throws an IllegalArgumentException
Path path3 = path1.relativize(path2);
Run Code Online (Sandbox Code Playgroud)
我曾经想过path3会导致相对路径../.Path如果没有定义根元素,为什么返回一个表示文件系统中两个目录位于同一级别的结果是有效的,但是,当只有一个路径定义根元素时(如上所示),没有相对路径可以有待确定?
即
Path path1 = Paths.get("home/test");
Path path2 = Paths.get("user");
// results in ../../user
Path path3 = path1.relativize(path2);
Run Code Online (Sandbox Code Playgroud)
非绝对路径相对于某些未指定的基本目录.如果你有两条这样的路径,那么想象一下它们是相对于同一个(但仍未指定的)基本目录是有道理的,然后它就会有意义地询问一个人相对于另一个人的位置.
另一方面,如果你有两条路径,其中只有一条绝对,例如/home/test并且home不知道那是什么关系.例如,如果基本目录恰好是/home/test/blah,那么home意味着/home/test/blah/home它应该相对于blah/home.但是该方法如何知道如何发明blah(或完全发明其他东西)?
使用相对路径的重点是,我还没有告诉你这个路径名的基本目录是什么.期望运行时库猜测我们明确没有告诉它的基本路径将完全违背该语义.