用递归的方法实现。
import java.io.File;
import java.util.Scanner;
public class ListFiles {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("C:\\Users\\Administrator>");
String scin = sc.nextLine(); //模仿DOS输入,比如dir E:\360Downloads
String path = scin.substring(scin.lastIndexOf(" ")+1); //获取目录,比如E:\360Downloads
path = path.replaceAll("\\\\", "\\\\\\\\");//把\变成\\,比如E:\\360Downloads
File file = new File(path);
listFiles(file,0);
sc.close();
}
public static void listFiles(File file,int level){
if(file.exists()){
if(file.isDirectory()){
for(int i=0;i<level;i++){
System.out.print(" ");
}
System.out.println("|--"+file.getName());
level++;
File[] files = file.listFiles();
for(File f:files){
listFiles(f,level);
}
}else if(file.isFile()){
for(int i=0;i<level;i++){
System.out.print(" ");
}
System.out.println("|--"+file.getName());
}
}
}
}
运行结果:
C:\Users\Administrator>dir E:\360Downloads
|--360Downloads
|--Software
|--hotfix
|--NDP40-KB2729449-x86.exe.mem
|--NDP40-KB2729449-x86.exe.P2P
|--NDP40-KB2729449-x86.exe.trt
|--windows6.1-kb3212642-x86_d5906af5f1f0dc07a5239311b169619ce255ab12.msu.mem
|--windows6.1-kb3212642-x86_d5906af5f1f0dc07a5239311b169619ce255ab12.msu.P2P
|--windows6.1-kb3212642-x86_d5906af5f1f0dc07a5239311b169619ce255ab12.msu.trt
|--windows6.1-kb4012212-x86_6bb04d3971bb58ae4bac44219e7169812914df3f.msu.mem
|--windows6.1-kb4012212-x86_6bb04d3971bb58ae4bac44219e7169812914df3f.msu.P2P
|--windows6.1-kb4014565-x86_a8749d60fb61f5558fbb501d4ca68b978e3742c3.msu.mem
|--windows6.1-kb4014565-x86_a8749d60fb61f5558fbb501d4ca68b978e3742c3.msu.P2P
|--windows6.1-kb4014565-x86_a8749d60fb61f5558fbb501d4ca68b978e3742c3.msu.trt
|--windows6.1-kb4015546-x86_a753365290d940872860776113f226436a18ca9b.msu.mem
|--windows6.1-kb4015546-x86_a753365290d940872860776113f226436a18ca9b.msu.P2P