具体请看代码实现,挺简单的。
package com.bz.a;
import java.io.File;
/**
* 递归算法实现目录树的遍历
*/
public class Recursion {
public static void main(String[] args) {
Recursion r = new Recursion();
String root = "E:\\test";
System.out.println(root);
r.outCatalogue(root);
}
/**
* 将当前路径的所有目录输出
* @param path 要遍历的路径名
*/
File mainFile = null;//第一个文件、上层文件
int rank = 0;//空格数
String blank;//空格
public void outCatalogue(String path) {
mainFile = new File(path);
//只是一个空目录或者只是一个文件
if (mainFile.listFiles() == null) {
System.out.println(mainFile.getName());
return;
}
for (File childFile : mainFile.listFiles()) {
if (childFile.isDirectory()) {
// 有多少级目录就循环多少个空格
rank = childFile.getParent().split("\\\\").length;//
blank = forblank(rank);
System.out.println(blank + "目录:" + childFile.getName());
this.outCatalogue(childFile.getPath());//将当前目录传入递归。如当前目录2052,如果当前目录不存在子目录,则往下执行
//循环可执行文件
for (File executable : childFile.listFiles()){
if(executable.isFile()){
rank = executable.getParent().split("\\\\").length;// \\\\——>\
blank = forblank(rank);
System.out.println(blank + "-可执行文件:" + executable.getName());
}
}
}
}
}
public String forblank(int rank){
// 缩进空格
String blank = "";
for (int i = 0; i < rank; i++) {
blank = blank + " ";
}
return blank;
}
}