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