猿问

如何从两个绝对路径(或URL)构造Java中的相对路径?

如何从两个绝对路径(或URL)构造Java中的相对路径?

给定两条绝对路径。

/var/data/stuff/xyz.dat/var/data

如何创建使用第二条路径作为基础的相对路径?在上面的例子中,结果应该是:./stuff/xyz.dat


德玛西亚99
浏览 1302回答 3
3回答

翻阅古今

这有点迂回,但为什么不使用URI呢?它有一个相对的方法,为你做所有必要的检查。String path = "/var/data/stuff/xyz.dat";String base = "/var/data";String relative = new File(base).toURI(). relativize(new File(path).toURI()).getPath();// relative == "stuff/xyz.dat"请注意,对于文件路径,java.nio.file.Path#relativize自Java 1.7以来,正如@Jirka Meluzin在……里面另一个答案.

偶然的你

因为Java 7可以使用相对论性方法:import java.nio.file.Path;import java.nio.file.Paths;public class Test {      public static void main(String[] args) {         Path pathAbsolute = Paths.get("/var/data/stuff/xyz.dat");         Path pathBase = Paths.get("/var/data");         Path pathRelative = pathBase.relativize(pathAbsolute);         System.out.println(pathRelative);     }}产出:stuff/xyz.dat
随时随地看视频慕课网APP

相关分类

Java
我要回答