好的,我不能完全说出来,但我需要以下内容:
C:\Temp\Something\GroupName\...\file.ts -> GroupName\...\file.ts
我想从文件夹中提取路径,直到结尾。
我在这里想到了这场灾难,但是我确定自己正在重新发明轮子。
private Path extractGroupPath(Path path, String groupName) {
int i;
for (i = 0; i < path.getNameCount(); i++) {
if (path.getName(i).startsWith(groupName)) {
break;
}
}
Path groupPath = Paths.get("");
for (; i < path.getNameCount(); i++) {
groupPath = groupPath.resolve(path.getName(i));
}
return groupPath;
}
答案 0 :(得分:1)
要获取路径之间的相对路径,可以使用relativize()
方法。
因此,一旦找到基本路径,就应该可以执行此操作;如果您不知道该基本路径,则可以通过遍历父项(使用getParent()
)来完成,直到找到为止(通过检查getFilename()
)或点击根目录。然后,它应该像parentPath.relativize(path)
一样简单。
答案 1 :(得分:1)
托马斯给出的答案很棒,可以满足我的需要,但最终我决定这样做:
public Path extractGroupPath(Path path, String groupName) {
int startIndex = path.toString().indexOf(groupName);
String groupPath = path.toString().substring(startIndex);
return Paths.get(groupPath);
}
因为它更简单易懂。