如何在Java中以相反的顺序打印文件路径?

anauzrmj  于 2023-09-29  发布在  Java
关注(0)|答案(3)|浏览(99)

我想以相反的顺序打印文件/文件夹的相对路径。

IPath projectRelativePath = element.getProjectRelativePath();

结果是“src/abc/foldername”。
但我想要的结果在相反的方式即。文件夹名称/abc/src。
有人能帮帮我吗?是否有任何JAVA API可用于此?

frebpwbc

frebpwbc1#

我相信你可以通过用“/”分割路径,然后以相反的顺序连接标记来实现。
下面是一个代码片段:

Path path = Path.of("this/that/folder");
    List<String> tokens = Arrays.stream(path.toString().split("/")).toList();
    StringBuilder newPath = new StringBuilder();
    for(int i = tokens.size() - 1; i >= 0; i--){
       newPath.append(tokens.get(i));
       newPath.append("/");
    }
    System.out.println(newPath.toString());
68de4m5k

68de4m5k2#

Path组件中的Stream可用于反转相对路径的组件,并且还使用适当的文件分隔符处理任何平台:

Stream.iterate(Path.of("src/abc/foldername"), Objects::nonNull, Path::getParent)
      .map(Path::getFileName).map(Path::toString)
   .collect(Collectors.joining(File.separator));
==> "foldername/abc/src"  (or foldername\abc\src on Windows)
kiz8lqtg

kiz8lqtg3#

我假设您正在使用Eclipse平台的接口IPath(您的问题中没有说明,但似乎很有可能)。
IPath documentation中我们可以看到,我们可以按照相反的顺序得到各个段,如下所示:

for (int i = projectRelativePath.segmentCount() - 1; i >= 0; i--) {
    System.out.println(projectRelativePath.segment(i)); // or append to string etc.
}

相关问题