使用..父目录说明符("点点")解析路径名而不解析符号链接

Bee*_*ope 9 java filesystems file apache-commons guava

给定一条路径/a/./b/c/../d,我想删除所有"当前目录"指标(即句点)和"父目录"指标(即......),给出a/b/d.

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

任何简单的方法?也就是说,比编写一个标记器并自己处理它更简单.

如果你能告诉我"."的正确名称,可以获得奖励积分.和'..'就是在这种背景下.

Col*_*inD 10

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


dou*_*arp 4

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

"Dot"(.)是当前目录,"dot dot"(..)是父目录 - 在unix目录中读取.