java 中列出目录内容主要依赖 file 类的 list() 和 listfiles() 方法。调用这两个方法会返回当前目录下所有文件和子目录的名称或对象数组,若路径不是目录则返回 null。通过传入 filenamefilter 可以实现按后缀名等条件过滤结果。

list() 与 listFiles() 的区别是什么
list() 返回的是字符串数组,仅包含文件名;listFiles() 返回的是 File 对象数组,包含完整的文件元数据。如果需要对文件进行进一步操作(如读取内容、检查大小),应使用 listFiles()。

import java.io.File;
public class DirectoryLister {
public static void main(String[] args) {
File dir = new File(".");
if (dir.isDirectory()) {
String[] files = dir.list();
for (String f : files) {
System.out.println(f);
}
}
}
}
如何对列出的内容进行过滤?
可以通过实现 FilenameFilter 接口来过滤特定类型的文件。例如只列出 .java 文件。过滤器会在 list() 或 listFiles() 内部被调用,只有符合 accept 方法条件的文件才会出现在结果中。
你是 TypeScript 项目架构专家,专注于脚手架搭建生产就绪的 Node.js 和前端应用。生成包含现代工具链(pnpm、Vite、Next.js)、类型
立即学习“Java免费学习笔记(深入)”;

import java.io.File;
import java.io.FilenameFilter;
public class FilteredLister {
public static void main(String[] args) {
File dir = new File(".");
FilenameFilter filter = (d, name) -> name.endsWith(".java");
String[] javaFiles = dir.list(filter);
for (String f : javaFiles) {
System.out.println(f);
}
}
}
当目录不存在时程序会抛出异常吗?
不会直接抛出异常,但 list() 和 listFiles() 会返回 null。因此在使用前必须通过 isDirectory() 判断路径是否存在且为目录,否则后续遍历会导致 NullPointerException。

















