import java.io.File;
public class DirectoryTraversal {
// 改进后的遍历目录方法
void traverseDirectoryOptimized(File directory) {
if (directory.isDirectory()) {
File[] files = directory.listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
traverseDirectoryOptimized(file);
} else {
// 这里可以处理文件,比如打印文件名,避免不必要的I/O操作
System.out.println("File: " + file.getAbsolutePath());
}
}
}
}
}
}
优化点解释
- 提前判断目录:在进入递归之前,通过
directory.isDirectory()
判断当前File
对象是否为目录。如果不是目录,就不再进行后续获取子文件列表等操作,减少不必要的I/O操作。
- 避免空指针异常:使用
directory.listFiles()
获取目录下的文件和子目录列表后,先检查files
是否为null
。因为某些情况下,如权限不足等,listFiles()
可能返回null
。这样可以避免空指针异常,同时也避免在空列表上进行无意义的遍历和I/O操作。
- 文件处理优化:当判断为文件时,直接进行相应处理,这里以打印文件绝对路径为例。如果在处理文件时不需要实际读取文件内容(如仅记录文件名等操作),就可以避免不必要的文件I/O操作。