给定/a/./b/c/../d
这样的路径,我想删除所有“当前目录”指标(即句点)和“父目录”指标(即......),给出a/b/d
。
我可以使用File.getCanonicalPath()
,但这也解决了我不想要的符号链接。
有什么简单的方法吗?也就是说,比编写一个标记器并自己处理它更简单。
如果你可以告诉我“。”的正确名称,可以获得奖励积分。和'..'就是在这种背景下。
答案 0 :(得分:8)
Guava也将此作为Files.simplifyPath(String)
。不过,您最好的选择(如果您可以使用JDK7)是将您的路径表示为Path
并使用Path.normalize()
来获取规范化版本。
答案 1 :(得分:5)
您可以在Apache Commons IO库中使用FilenameUtils.normalize()
- see javadoc here。
“Dot”(.
)是当前目录,“dot dot”(..
)是父目录 - read up on unix directories。
答案 2 :(得分:1)
还要看一下这个问题(Java 7或更新版本): Java: how to normalize paths with nio Path?
解决方案很棒,但它不可移植(它不适用于Windows机器)。