我正在使用 java 7 的新 Path 对象,但遇到了问题。
我有一个带有基本目录的文件存储系统,并且我创建了自己的相对路径。最后,我只想将这个相对路径存储在某个地方。我遇到了 Path.relativize 的问题。
我有两个用例。1.
Path baseDir = Paths.get("uploads");
Path filename = Paths.get("uploads/image/test.png")
return baseDir.relativize(filename);
这将返回一个完美的 Path image/test.png
。
但是,用例 2:
Path baseDir = Paths.get("uploads");
Path filename = Paths.get("image/test.png")
return baseDir.relativize(filename);
返回../image/test.png
。我只想让它返回“image/test.png”
在路径教程中它说
在没有任何其他信息的情况下,假设 2 个 Path 是兄弟姐妹
我想要的是能够检测到这种情况。在这种情况下,我只想返回文件名并忽略 baseDir。
我目前这样解决它,但我希望有更好的方法:
Path rootEnding = getRootDirectory().getName(getRootDirectory().getNameCount() - 1);
for (Path part : path) {
if (part.equals(rootEnding)) {
return getRootDirectory().relativize(path);
}
}
return path;
所以我的问题是,有没有更好的方法来检查这个?