我如何从路径的特定目录获取子路径?

时间:2019-01-18 12:13:44

标签: java algorithm refactoring

好的,我不能完全说出来,但我需要以下内容:

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;
}

2 个答案:

答案 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);
    }

因为它更简单易懂。