Java如何使用DirectoryStream在目录中查找文件?
在此示例中,我们将学习使用包的DirectoryStream哪一部分java.nio.file在目录中查找文件。我们首先创建一个Path,将在其中进行搜索的目录。
之后,我们创建一个DirectoryStreamusingFiles.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声明是JDK7中引入的改进。