11

给定类似 的路径/a/./b/c/../d,我想删除所有“当前目录”指示符(即句点)和“父目录”指示符(即 ..),给出a/b/d.

我可以使用File.getCanonicalPath(),但这也解决了我不想要的符号链接。

有什么简单的方法吗?也就是说,比编写一个标记器并自己处理它更简单。

如果你能告诉我 '.' 的正确名称是什么,可以加分。和 '..' 在这种情况下。

4

3 回答 3

12

番石榴也有这个Files.simplifyPath(String)。但是,您最好的选择(如果您可以使用 JDK7)是将您的路径表示为 aPath并用于Path.normalize()获取规范化版本。

于 2012-11-08T03:06:17.243 回答
4

您可以FilenameUtils.normalize()Apache Commons IO库中使用 -请参阅此处的 javadoc

“点”(.)是当前目录,“点”(..)是父目录——在 unix 目录上阅读

于 2012-11-08T02:02:26.450 回答
2

也看看这个问题(Java 7 或更新版本): Java: how to normalize paths with nio Path?

该解决方案很棒,但它不可移植(它不适用于 Windows 机器)。

于 2018-01-15T11:50:23.407 回答