给定两条路径,如何计算一条到另一条的相对路径?
我曾想过split
以花哨的方式使用它,但似乎有点不客气,尤其是在诸如"http://foo.com/bar/baz#header"
或的情况下"http://foo.com/bar/baz"?param=value
。
一个例子是:
String url1 = "http://foo.com/bar/baz";
String url2 = "http://foo.com/bar/qux/quux/corge";
System.out.println(relative(url1, url2)); // -> "../qux/quux/corge"
Java
已经提供了此功能,因此最安全的选择是采用“标准”方式:
String url1 = "http://foo.com/bar/baz";
String url2 = "http://foo.com/bar/qux/quux/corge";
Path p1 = Paths.get(url1);
Path p2 = Paths.get(url2);
Path p = p1.relativize(p2);
System.out.println("Relative path: " + p);
print
上面的语句显示了正确的相对路径-即,在这种情况下,
../qux/quux/corge
如果协议(例如,HTTP和https)和主机部分可以是不同的,那么转换url1
和url2
以上,进入URL
对象and using the
的getPath()`方法应该产生正确的相对路径。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句