首页 > 解决方案 > java listFiles() 只返回文件

问题描述

我注意到该listFiles()方法返回文件和目录,但是我想filePath只用文件填充我的数组。我知道有一种isFile()方法,但我不知道如何结合它listFiles()来实现我想要的。

我发现了一些类似的问题,但它们是关于在扩展名上应用过滤器,而我没有考虑特定的文件扩展名。

提前致谢!:)

示例代码:

File f = new File (path);
File [] filePath;
filePath = f.listFiles(); // how to modify this to get files only?

标签: java

解决方案


使用FileAPI:

File f = new File (path);
File [] files = f.listFiles(File::isFile);

使用Path设计得更好的 API,您可以编写:

Path dir = Paths.get(path);
List<Path> path =
    Files.list(dir)
         .filter(Files::isRegularFile)
         .collect(Collectors.toList());

或者直接使用以下流Path

Path dir = Paths.get(path);
Files.list(dir)
     .filter(Files::isRegularFile)
     .forEach(p -> doSomethingWithP);

推荐阅读