ZetCode

Java Files.list

上次修改时间:2024 年 7 月 6 日

在本文中,我们将展示如何使用 Java 中的 Files.list 列出文件。

Files.list 返回一个惰性填充的目录元素流。 此列表不是递归的。

流的元素是 Path 对象。

列出当前目录

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

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

void main() throws IOException {

    var path = Paths.get(".");

    try (var files = Files.list(path)) {
        files.forEach(System.out::println);
    }
}

点符号表示当前工作目录。 我们使用 Paths.get 获取路径对象。

列出 home 目录中的目录

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

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

void main() throws IOException {

    var homeDir = System.getProperty("user.home");
    var path = new File(homeDir).toPath();

    try (var files = Files.list(path)) {
        files.filter(p -> p.toFile().isDirectory())
                .forEach(System.out::println);
    }
}

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

按文件扩展名列出

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

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

void main() throws IOException {

    var homeDir = System.getProperty("user.home")
            + FileSystems.getDefault().getSeparator() + "Downloads";

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

该程序列出 Downloads 目录中的 PDF 文件。 路径对象被转换为字符串,我们对字符串调用 endsWith 以检查它是否以 pdf 扩展名结尾。

计数文件

我们计算 PDF 文件的数量。

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

void main() throws IOException {

    var homeDir = System.getProperty("user.home")
            + FileSystems.getDefault().getSeparator() + "Downloads";

    try (var files = Files.list(Paths.get(homeDir))) {
        var nOfPdfFiles = files.filter(path -> path.toString()
                .endsWith(".pdf")).count();
        System.out.printf("There are %d PDF files", nOfPdfFiles);
    }
}

文件的数量由 count 确定。

来源

Java 基础 I/O - 教程

在本文中,我们使用了 Files.list 来列出目录内容。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出所有Java教程