java - 如何使用 Files.walk 获取文件夹名称和文件名

标签 java file

我有一个场景,我需要同时使用 Files.walk 获取文件夹名称和文件名。

目录如下: c:\files\文件夹名1\文件名1.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);
}

有没有一种方法可以同时使用一个过滤器获取文件夹名称和文件名。

最佳答案

这个:

Map<Path, List<Path>> files = walk.filter(Files::isRegularFile).collect(Collectors.groupingBy(Path::getParent))

将为您提供一个ListPathMap。映射的键将是父目录路径。映射的值将是映射条目的键对应的目录中包含的所有文件的列表。

关于java - 如何使用 Files.walk 获取文件夹名称和文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61281379/

相关文章:

java - 在java代码中加载网络路径

java - 如何在Camel中捕获seda队列满异常?

关于文本日志文件的 C# 最佳实践

file - 如何在 Typo3 中为上传的文件添加发布日期?

c - 用 C 写入文件?

java - JSF onchange 事件

java - 无法实例化 TestExecutionListener

java - setAlpha 以编程方式查看

java - Hibernate 自引用实体作为非空列

java - 从Java访问文件名中带空格的文件