Java如何使用DirectoryStream在目录中查找文件?

在此示例中,我们将学习使用包的DirectoryStream哪一部分java.nio.file在目录中查找文件。我们首先创建一个Path,将在其中进行搜索的目录。

之后,我们创建一个DirectoryStreamusing Files.newDirectoryStream()。为了创建目录流,我们传递了两个参数,即起始路径和glob表达式。下面我们使用*.txtglob表达式来过滤中的所有文本文件D:/Workbench。

要获取目录流的所有条目,我们可以使用一个foreach循环,如下所示。我们迭代每个条目,它是一个Path对象。然后,使用该getFileName()方法打印条目文件名。

package org.nhooo.example.io;

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

public class FindFilesInDirectory {
    public static void main(String[] args) {
        Path dir = Paths.get("D:/Workbench");

        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, "*.txt")) {
            for (Path entry : stream) {
                System.out.println(entry.getFileName());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

您还可以注意到,在此示例中,我们正在使用该try-with-resource语句。这意味着该过程完成后,DirectoryStream将被适当关闭。这种try声明是JDK 7中引入的改进。