java listFiles()仅返回文件

时间:2018-08-03 20:12:37

标签: java

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

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

提前谢谢! :)

示例代码:

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

1 个答案:

答案 0 :(得分:2)

使用File API:

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);