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 确定。
来源
在本文中,我们使用了 Files.list 来列出目录内容。
作者
列出所有Java教程。