我想以相对的形式将文件路径参数传递给我的应用程序,例如~/test.conf
或../test.conf
,但我无法获得正确的完整文件路径,尽管我已经尝试使用旧java.io
和新java.nio Files/Paths
。是否有一般方法来获得没有大量代码的已解析文件路径?解决方案只适用于像OsX或Debian这样的unix环境。
更新
使用提供的参数,例如~/test.conf
在getAbsolutePath
的情况下,它返回带有前缀当前文件夹的路径 - /Users/currentUser/Projects/Personal/TestProject/~/text.conf
。 Canonical path返回相同的内容。
答案 0 :(得分:0)
这里的硬位是处理POSIX主目录,确定你也处理~otheruser/dir/test.conf
(如果你想正确地处理它)。
幸运的是,How to handle ~ in file paths涵盖了这一点。
TL; DR - 使用类似的东西:
path.replace("~/", System.getProperty("user.home") + "/");
一旦您完成了这项工作,并且正如其他人所评论的那样,您可以使用标准的java.io
方法(包括getCanonicalPath()
)。