考虑从两个绝对路径构建相对路径的挑战。例如,给定这些绝对路径:
/var/data/stuff/xyz.dat /var/data
所需的相对路径(以第二条路径为基础)是:
./stuff/xyz.dat
如何在 Java 中有效实现这一点?
要解决这个问题,请考虑使用 Java 的 URI 类。 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"
如果您的 Java 版本是 1.7 或稍后,您还可以利用 java.nio.file.Path.
String path = "/var/data/stuff/xyz.dat"; String base = "/var/data"; Path basePath = Paths.get(base); Path absPath = Paths.get(path); Path relativePath = basePath.relativize(absPath); // relativePath == Paths.get("stuff/xyz.dat")中提供的 relativize 方法
以上是如何在 Java 中从两个绝对路径构造相对路径?的详细内容。更多信息请关注PHP中文网其他相关文章!