概述
递归遍历某个文件夹下的所有文件及子文件夹里的所有文件。
注意:层级较深,每个层级下文件或文件夹较多时,可能导致栈内存溢出。
实现
package com.lovehena.recursion;
import lombok.extern.slf4j.Slf4j;
import java.io.File;
/*
* 递归遍历某个文件夹下的所有文件及子文件夹中的所有文件
* */
@Slf4j
public class ListDirFiles {
public static void main(String[] args) {
listDirFiles("D:\\学习");
}
/**
* @param dirPath 顶层目录
*/
private static void listDirFiles(String dirPath) {
File parentPath = new File(dirPath);
if (!parentPath.isDirectory()) return; // 不是目录 直接返回
// 读取文件或文件夹时 若操作系统当前用户无法访问该文件或文件夹 可能导致parentPath为null
// 进而导致NullPointerException 建议将以下代码放入try{}catche() 代码块中
for (File file : parentPath.listFiles()) {
String path = file.getAbsolutePath();
log.info(path); // 输出文件/文件夹的路径
listDirFiles(file.getAbsolutePath()); // 递归遍历子文件夹中的文件
}
}
// todo 扩展:整合elementui中Tree组件可视化展示
}
输出
扩展
整合elementui中Tree组件可视化展示