通过递归函数,展示某个文件下目录结构
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