Java Files.Walk只过滤" O _"

时间:2015-11-09 13:35:36

标签: java file

你能帮我解决一下如何只过滤以" O _"?开头的文件对我来说,StartsWith和EndsWith方法并不起作用。结果总是一个空列表。

Files.walk(Paths.get(SOURCEDIR)).filter(Files::isRegularFile).forEach(filePath -> {
        if (true){
            System.out.println(filePath.getFileName());
        }
    });

2 个答案:

答案 0 :(得分:3)

真的很老问题,但是当我搜索某些目录时,我仍然会找到它。

无论如何,assylias评论了要添加的第一篇文章:

filter(p -> p.getFileName().startsWith("O_"))

由于缺少.toString()函数,因此无效。有了这个,您可以通过更有效的方式解决问题:

Files.walk(Paths.get(SOURCEDIR))
    .filter(p -> p.getFileName().toString().startsWith("O_"))
    .forEach(System.out::println);

哪一个使用Java 8语法,并为您提供了一个完成工作的独立行。

答案 1 :(得分:2)

如果我理解你的问题,这应该做的工作:

Files.walk(Paths.get(SOURCEDIR)).filter(Files::isRegularFile).forEach(filePath ->{

String name=filePath.getFilename().toString();

    if (name.startWith("_O"){
        System.out.println(filePath.getFileName());
    }

});