java:File類遞迴練習(按層級列印)
阿新 • • 發佈:2018-11-22
從鍵盤接收一個資料夾路徑,把資料夾中的所有檔案以及資料夾的名字按層級列印, 例如:
aaa是資料夾,裡面有bbb.txt,ccc.txt,ddd.txt這些檔案,有eee這樣的資料夾,eee中有fff.txt和ggg.txt,打印出層級來
aaa
bbb.txt
ccc.txt
ddd.tx
eee
fff.txt
ggg.txt
package com.heima.test; import java.io.File; import java.util.Scanner; public class Test4 { public static void main(String[] args) { File dir=getDir(); printLev(dir,0); } private static void printLev(File dir,int Lev) { File[] subFiles=dir.listFiles(); for (File file : subFiles) { for(int i=0;i<=Lev;i++) { System.out.println("\t"); } System.out.println(file); if(file.isDirectory()) { printLev(file,Lev+1); } } } public static File getDir() { //鍵盤輸入 Scanner sc=new Scanner(System.in); System.out.println("請輸出一個資料夾路徑"); while(true) { //將鍵盤輸入的路徑儲存並封裝成一個File物件 String line=sc.nextLine(); File dir=new File(line); if(!dir.exists()) { System.out.println("您輸入的資料夾路徑不存在,請輸入一個資料夾路徑"); }else if(dir.isFile()) { System.out.println("您輸入的是個檔案路徑,請輸入一個資料夾路徑"); }else { //如果是目錄將資料夾物件返回 return dir; } } } }