我想以相反的顺序打印文件/文件夹的相对路径。
IPath projectRelativePath = element.getProjectRelativePath();
结果是“src/abc/foldername”。但我想要的结果在相反的方式即。文件夹名称/abc/src。有人能帮帮我吗?是否有任何JAVA API可用于此?
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());
68de4m5k2#
Path组件中的Stream可用于反转相对路径的组件,并且还使用适当的文件分隔符处理任何平台:
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)
kiz8lqtg3#
我假设您正在使用Eclipse平台的接口IPath(您的问题中没有说明,但似乎很有可能)。从IPath documentation中我们可以看到,我们可以按照相反的顺序得到各个段,如下所示:
IPath
for (int i = projectRelativePath.segmentCount() - 1; i >= 0; i--) { System.out.println(projectRelativePath.segment(i)); // or append to string etc. }
3条答案
按热度按时间frebpwbc1#
我相信你可以通过用“/”分割路径,然后以相反的顺序连接标记来实现。
下面是一个代码片段:
68de4m5k2#
Path
组件中的Stream
可用于反转相对路径的组件,并且还使用适当的文件分隔符处理任何平台:kiz8lqtg3#
我假设您正在使用Eclipse平台的接口
IPath
(您的问题中没有说明,但似乎很有可能)。从IPath documentation中我们可以看到,我们可以按照相反的顺序得到各个段,如下所示: