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

标签 java url file path

给定两个绝对路径,例如

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

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

最佳答案

有点迂回,但为什么不使用URI呢?它有一个 relativize 方法,可以为你做所有必要的检查。

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"

请注意,正如 @Jirka Meluzin 所指出的,自 Java 1.7 以来,对于文件路径,java.nio.file.Path#relativizethe other answer .

关于java - 如何从两个绝对路径(或 URL)构造 Java 中的相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/204784/

相关文章:

java - 如何在 switch 语句中合并案例?

java - 为什么这个 RecyclerView + CardView 示例不起作用?

C++ 调试断言错误

javascript - 有没有办法在离线时使用 JavaScript 文件? (HTML/JADE/JS/离线)

Python:不完整的 URL 正则表达式输出

JAVA8,解析文本文件并将其值解析为对象

c++ - 逐行读取文件并存储值

java - 在 Netbeans 中使用 GUI 时,我尝试调用私有(private) void 函数

java - 除了在 JavaScript 等多范式/函数式语言中隐藏信息之外,闭包的真正值(value)主张是什么?

java - 使用 Controller 中的代码查找 Spring MVC 3.1 中是否存在 URL 映射