通过Filtering从Java8中的文件夹中仅获取文件名

时间:2017-11-28 10:43:25

标签: java lambda collections java-8

我想只列出Java 8中以.txt扩展名结尾的文件夹中的文件名。

使用这段代码,我获得了所有文件名,并且有很多 .txt 扩展名:

List<Path> fileNames = Files.list(configFilePath)
                .map(Path::getFileName)
                .sorted()
                .collect(toList());

但是使用这段代码我得到一个空的:

List<Path> fileNames = Files.list(configFilePath)
                filter(file -> file.getFileName().endsWith(".txt"))
                .map(Path::getFileName)
                .sorted()
                .collect(toList());

1 个答案:

答案 0 :(得分:6)

要实现此目的,请使用以下代码行:

Files.list(configFilePath)
    .filter(s -> s.toString().endsWith(".txt"))
    .forEach(System.out::println);

您的任务是仅从文件夹中获取以.txt结尾的文件名。因此,实现此目的的最简单方法是使用filter方法,该方法将谓词作为参数。使用谓词意味着保留满足给定条件的所有元素。因为您有ListPath个对象,所以我们首先需要将这些对象转换为String并检查它是否以.txt结尾。最后我们只打印结果。