levels 记录层数,用于控制深一层文件前的空格数量
public class DirectorList { private static Scanner sc; public static void main(String[] args) { String route = getRoute(); File file = new File(normRoute(route)); System.out.println(file.getName()); showFile(file, 1); } /* * 利用递归遍历所有子目录,levels记录文件夹的层数(控制空格长度,模拟分层效果 ) */ public static void showFile(File files,int levels){ //获取所有的文件列表 File[] arrFiles = files.listFiles(); String str = ""; //每向下延伸一层,文件前增加一层 for (int i = 0; i < levels; i++) { str += " "; } //增强for遍历文件数组 for (File childFile : arrFiles) { System.out.println(str + childFile.getName()); //如果file是目录,递归调用 if(childFile.isDirectory()) showFile(childFile, levels + 1); } } //获取用户输入文件路径 public static String getRoute(){ sc = new Scanner(System.in); System.out.println("请输入文件的绝对路径:"); String route = sc.next(); return route; } //对用户输入的文件路径进行分割重新组装 public static String normRoute(String str){ //定义分割符\ String strSplit = "\\\\"; String normalSplit = ""; String[] arrRoute = str.split(strSplit); for (String sonRoute : arrRoute) { normalSplit = normalSplit + sonRoute + "\\\\"; } return normalSplit; } } console: 请输入文件的绝对路径: D:\foxmail\Global Global 7_1.ver Address 3.0 1 AddrFolderTreeStg.hea AddrFolderTreeStg.htb AddrFolderTreeStg.rec0 AddrNoteIdToEmails AddrNoteIdToMainEmailId Indexes hitCount.ind AddressOption Images contact.png alarm 文章来源: Java之递归遍历文件目录