Java path1.resolve(path2)返回path2偶数path2.isAbsolute()=false,且path2不为空
给定以下代码Java path1.resolve(path2)返回path2偶数path2.isAbsolute()=false,且path2不为空,java,windows,nio,nio2,Java,Windows,Nio,Nio2,给定以下代码 Path p1 = Paths.get("\\photos\\vacation"); Path p2 = Paths.get("\\yellowstone"); System.out.println(p1.isAbsolute()); // false System.out.println(p2.isAbsolute()); // false System.out.println(p1.resolve(p2)); // \yellows
Path p1 = Paths.get("\\photos\\vacation");
Path p2 = Paths.get("\\yellowstone");
System.out.println(p1.isAbsolute()); // false
System.out.println(p2.isAbsolute()); // false
System.out.println(p1.resolve(p2)); // \yellowstone
JavaDoc说:
公共抽象路径解析(路径其他)
根据此路径解析给定路径
如果另一个参数是绝对路径,则此方法会简单地返回other
如果other是一个空路径,那么这个方法会简单地返回
路径
否则,此方法将此路径视为目录,并
根据此路径解析给定路径。在最简单的情况下
给定路径没有根组件,在这种情况下,此方法
将给定路径联接到此路径并返回一个结果路径
以给定的路径结束。其中给定路径具有根组件
然后,解决方案高度依赖于实现,因此
未指明
在Windows上运行时,路径不是绝对的,但其结果仍然是重新运行p2;我无法理解那种行为。我遗漏了什么?他们都说路径不是绝对路径,因为驱动器号(或引用文本称之为“根组件”)缺失。由于
p2
是从驱动器的根目录完全限定的,因此来自p1
的结果只有一部分是驱动器号,p1
也没有驱动器号,因此结果与p2
相同。应该如此!!--但是回答这个问题:如果您不希望结果与p2
相同,那么您希望结果是什么?您希望用代码实现什么?请注意,它并没有说“如果且仅当其他参数是绝对路径,则此方法很容易返回其他”。正如您所观察到的,在某些情况下,它可以返回p2,即使p2不是绝对值。这是来自oracle OCP认证考试问题的代码