天天看點

使用File類周遊本地目錄

       自己動手,豐衣足食。我發現必須得時常的親手敲下代碼 ,畢竟有些東西,時間一長就忘了,尤其是代碼這種要求一絲不苟的事情。今天在看權力的遊戲第八季的第四集之前,編寫好了這個周遊檔案目錄的代碼。看上去很簡單,但是還是需要動下腦子。ps:權力的遊戲是真的好看!

 說下注意的幾個點:

  •  這裡把level變量設定為函數的參數而不是成員變量,否則每往上一次就得減1,每往下一層就得加1,處理很麻煩。是以有時候巧妙的設計參數可以省去很多複雜的問題
  • 這裡注意不要使用傳回字元串的那個list函數。因為最後調用函數所需的參數 是File類型,還需要new File(),而且傳回的檔案名的字元串類型并不是絕對路徑,根本不能建立出符合要求的File對象
import java.io.File;


public class PrintDirectory{
//周遊目錄
	public static void main(String args[]) {
		File file = new File("F:\\haha");
//  周遊的是F盤下haha檔案夾下的檔案結構
		printTree(file,0);
	}
	static void printTree(File file,int level) {
//  level參數可直覺的看出目錄結構
		String pref = "";
		String pred = "";
		for(int i=0;i<level;i++) {
			pref += "-";
			pred += "+";
		}
//		控制輸出格式,能夠很好的區分檔案目錄的層次
//		這裡把level變量設定為函數的參數而不是成員變量,
//		否則每往上一次就得減1,每往下一層就得加1,處理很麻煩
//		是以有時候巧妙的設計參數可以省去很多複雜的問題
		if(file.isFile())
			System.out.println(pref+file.getName());
		else{
			System.out.println(pred+file.getName());
			File childs[] = file.listFiles();
//			這裡注意不要使用傳回字元串的那個list函數。因為最後調用函數所需的參數
//			是File類型,還需要new File(),而且傳回的檔案名的字元串類型并不是絕對路徑,
//			根本不能建立File對象
			for(File f : childs)
				printTree(f,level+1);
		}
	}

}