Bri*_*ian 4 java url relative-path
给定两条路径,如何计算从一条到另一条的相对路径?
我想过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"
Run Code Online (Sandbox Code Playgroud)
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);
Run Code Online (Sandbox Code Playgroud)
print上面的语句显示了正确的相对路径 - 即,在这种情况下,
../qux/quux/corge
Run Code Online (Sandbox Code Playgroud)
如果协议(例如,http 与 https)和主机部分可能不同,那么将url1和url2以上转换为URL对象and using thegetPath()` 方法,应该会产生正确的相对路径。