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