我有一个场景,我需要使用Files.walk同时获取文件夹名和文件名。
下面是目录: c:\files\foldername1\filename1.txt c:\files\foldername2\filename2.txt
下面的代码给出了文件名的输出
c:\\files\foldername1\\filename1.txt
c:\\files\foldername2\\filename2.txt
try (Stream<Path> walk = Files.walk(Paths.get("c:\\files"))) {
List<String> result = walk.filter(Files::isRegularFile)
.map(x -> x.toString()).collect(Collectors.toList());
}
下面的代码给出了目录的输出
c:\\files\foldername1
c:\\files\foldername2
try (Stream<Path> walk = Files.walk(Paths.get("c:\\files"))) {
List<String> result = walk.filter(Files::isDirectory)
.map(x -> x.toString()).collect(Collectors.toList());
result.forEach(System.out::println);
}
有没有办法同时使用一个过滤器来获取文件夹名和文件名?
发布于 2020-04-18 06:13:25
这一点:
Map<Path, List<Path>> files = walk.filter(Files::isRegularFile).collect(Collectors.groupingBy(Path::getParent))
将为您提供List
%s到Path
%s的关键字。映射的关键字将是父目录路径。映射的值将是包含在与映射条目的键相对应的目录中的所有文件的列表。
https://stackoverflow.com/questions/61281379
复制相似问题