# Java `Files.list`教程

原文：http://zetcode.com/java/fileslist/

Java Files.list 教程显示了如何使用`Files.list`列出 Java 中的文件。

`Files.list`返回目录元素的延迟填充流。 该列表不是递归的。

流的元素是`Path`对象。

## `Files.list`当前目录

第一个示例列出了当前目录。

`FilesListEx.java`

```java
package com.zetcode;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class FilesListEx {

    public static void main(String[] args) throws IOException {

        Files.list(Paths.get("."))
                .forEach(path -> System.out.println(path));
    }
}

```

点号代表当前的工作目录。 我们使用`Paths.get()`获得路径对象。

## `Files.list`目录

以下示例列出了用户主目录中的目录。

`FilesListEx2.java`

```java
package com.zetcode;

import java.io.File;
import java.io.IOException;
import java.nio.file.Files;

public class FilesListEx2 {

    public static void main(String[] args) throws IOException {

        var homeDir = System.getProperty("user.home");

        Files.list(new File(homeDir).toPath())
                .filter(path -> path.toFile().isDirectory())
                .forEach(System.out::println);
    }
}

```

我们使用`toFile()`将路径对象转换为`File`并调用`isDirectory()`方法。 用`filter()`过滤流。

## `Files.list`按文件扩展名

下一个程序列出了所有 PDF 文件。

`FilesListEx3.java`

```java
package com.zetcode;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class FilesListEx3 {

    public static void main(String[] args) throws IOException {

        var homeDir = System.getProperty("user.home")
                + System.getProperty("file.separator") + "Downloads";

        Files.list(Paths.get(homeDir)).filter(path -> path.toString().endsWith(".pdf"))
                .forEach(System.out::println);
    }
}

```

该程序将在`Downloads`目录中列出 PDF 文件。 路径对象被转换为字符串，我们在字符串上调用`endsWith()`以检查其是否以`pdf`扩展名结尾。

## `Files.list`计数文件

我们计算 PDF 文件的数量。

`FilesListEx4.java`

```java
package com.zetcode;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;

public class FilesListEx4 {

    public static void main(String[] args) throws IOException {

        var homeDir = System.getProperty("user.home")
                + System.getProperty("file.separator") + "Downloads";

        var nOfPdfFiles = Files.list(Paths.get(homeDir)).filter(path -> path.toString()
                .endsWith(".pdf")).count();

        System.out.printf("There are %d PDF files", nOfPdfFiles);
    }
}

```

文件数由`count()`确定。

在本教程中，我们使用`Files.list`列出目录内容。 您可能也对相关教程感兴趣： [Java 文件教程](/java/file/)， [Java `Files.walk`教程](/java/fileswalk/)， [Java `Files.list`教程](/java/fileslist/)， [Java `DirectoryStream`教程](/java/directorystream/) ， [Java 创建目录](/java/createdirectory/)，[用 Java 复制文件](/java/copyfile/)， [Java Unix 时间](/java/unixtime/)，[用 Java 创建文件](/java/createfile/)， [Java 教程](/lang/java/)，[阅读 Java](/articles/javareadtext/) 中的文本文件。