上一篇
Java file集合怎么用,有哪些常用方法?
- 云服务器
- 2026-07-24
- 7
文件操作基础
在Java中,处理文件集合通常涉及java.io.File类和java.nio.file包。File类提供了基本的文件操作,而NIO.2在Java 7中引入,提供了更强大的功能。
使用File类
File类可以表示文件或目录的路径。
- File file = new File("example.txt");
- 方法:exists(), isDirectory(), listFiles()等。
文件集合的实现
可以使用List<File>或Set<File>来存储文件对象。
- List<File> files = new ArrayList<>();
- 添加文件:files.add(new File("doc.txt"));
遍历目录
使用File.listFiles()方法获取目录中的文件数组。

| 方法 | 描述 |
|---|---|
| listFiles() | 返回目录中的所有文件 |
| listFiles(FilenameFilter) | 过滤文件名 |
过滤文件
使用FilenameFilter或FileFilter接口。
- FilenameFilter:接受目录和文件名。
- 示例:file.listFiles((dir, name) -> name.endsWith(".txt"));
引入NIO.2
java.nio.file.Files类提供了静态方法,如walk()用于遍历目录树。
- Files.walk(Path)返回一个Stream<Path>。
- 示例:Files.walk(Paths.get(".")).filter(Files::isRegularFile).forEach(System.out::println);

示例代码
相关问题与解答
问题1:如何高效遍历整个目录树?
高效遍历目录树可以使用Files.walk()方法,它返回一个懒加载的Stream<Path>,避免内存溢出。

Files.walk(startPath).forEach(System.out::println);
walk()可以设置最大深度,如walk(startPath, maxDepth),以控制遍历层级。
问题2:如何过滤特定类型的文件?
过滤文件可以使用FilenameFilter或FileFilter接口。
- File[] textFiles = dir.listFiles((dir, name) -> name.endsWith(".txt"));
或者使用NIO.2的Stream API:
- Files.walk(startPath).filter(Files::isRegularFile).filter(p -> p.toString().endsWith(".txt")).collect(Collectors.toList());