ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# Java 8 列出目录中的所有文件 – 六个示例 > 原文: [https://howtodoinjava.com/java8/java-8-list-all-files-example/](https://howtodoinjava.com/java8/java-8-list-all-files-example/) 学习将 Java 8 API 与`Files.list()`和`DirectoryStream`一起使用,以递归方式列出目录中存在的所有文件,包括隐藏文件。 ## 1\. 使用`Files.list()`列出所有文件和子目录 `Files.list()`方法列出当前目录中的**所有文件名和子目录**。 ```java Files.list(Paths.get(".")) .forEach(System.out::println); Output: .\filename1.txt .\directory1 .\filename2.txt .\Employee.java ``` ## 2\. 使用过滤器表达式仅列出目录内的文件 您可以使用过滤器过滤出子目录,并在需要时仅打印**文件名**。 ```java Files.list(Paths.get(".")) .filter(Files::isRegularFile) .forEach(System.out::println); Output: .\filename1.txt .\filename2.txt .\Employee.java ``` 要列出其他目录中的文件,我们可以将`"."`替换为所需目录的完整路径。 ## 3\. 使用`Files.newDirectoryStream()`列出文件和子目录 Java 提供了一种更灵活的使用`Files.newDirectoryStream()`遍历目录内容的方式。 > 请注意,如果我们使用的是大型目录,则使用`DirectoryStream`实际上可以使代码更快。 ```java Files.newDirectoryStream(Paths.get(".")) .forEach(System.out::println); Output: .\filename1.txt .\directory1 .\filename2.txt .\Employee.java ``` ## 4\. 使用`Files.newDirectoryStream()`仅列出文件 要仅列出文件并从流中排除所有目录,请使用路径过滤器作为第二个参数。 ```java Files.newDirectoryStream(Paths.get("."), path -> path.toFile().isFile()) .forEach(System.out::println); Output: .\filename1.txt .\filename2.txt .\Employee.java ``` ## 5\. 使用`Files.newDirectoryStream()`列出一定范围的文件 您可以更改在第二个参数中传递的路径过滤器表达式,以仅获取具有特定扩展名的文件。 ```java Files.newDirectoryStream(Paths.get("."), path -> path.toString().endsWith(".java")) .forEach(System.out::println); Output: .\Employee.java ``` ## 6\. 在目录中查找所有隐藏文件 要查找所有隐藏文件,可以在上述任何示例中使用过滤器表达式`file -> file.isHidden()`。 或者,您可以使用此快捷方式。 ```java final​ ​File​​[]​ files = ​new​ ​File​(​"."​).listFiles(file -> file.isHidden()); //or final​ ​File​​[]​ files = ​new​ ​File​(​"."​).listFiles(​File​::isHidden); ``` 在以上示例中,我们学习了使用 Java 8 API 列表或根据各种搜索条件递归地迭代目录中的文件。 随意修改代码并使用它。 学习愉快! 参考文献: [`DirectoryStream`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/DirectoryStream.html) [`Files.list()`方法](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#list-java.nio.file.Path-)