Java解析相对路径

8
如何解析相对路径?我需要一个类似于PHP realpath 函数的解决方案。该函数只需移除所有的 "../" 和 "./",以便输入字符串可以安全地与其他字符串一起使用。
3个回答

13
一般的方法是使用File类的getCanonicalPath()方法。
具体文档已经记录了要删除(解析)您正在查找的 ../ ./
摘自文档:

如果需要,此方法首先将此路径名转换为绝对形式[...],然后以系统相关的方式将其映射到其唯一形式。这通常涉及从路径名中删除冗余名称,例如".""..",解析符号链接(在UNIX平台上),并将驱动器字母转换为标准大小写(在Microsoft Windows平台上)。


4

既然您提到了PHP,我会假设这是一个网页上下文。使用Servlet API,您可以使用servletContext.getRealPath(relativePath)获得相对路径对应的真实路径。

在非网页上下文中,您可以使用file.getAbsolutePath(),其中file是使用相对路径构建的java.io.File对象。


实际上我正在寻找一个通用函数......肯定有类似这样的东西。 - Pass

1

我知道它还没有投入生产,但在Java 7中,你可以调用Path.resolve(Path)

只是提醒一下。


1
更或多或少,Path.resolve 只是对路径的两个部分进行巧妙的连接。例如,目录路径 + 文件名,再加上一些其他技巧。"此方法将给定的路径与此路径连接,并返回以给定路径结尾的结果路径。" - Peter Perháč

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接