(轉自:http://blog.csdn.net/gangwazi0525/article/details/7569701)java
1 import java.io.File; 2 3 public class ReadDirectory { 4 // 文件所在的層數 5 private int fileLevel; 6 7 /** 8 * 生成輸出格式 9 * @param name 輸出的文件名或目錄名 10 * @param level 輸出的文件名或者目錄名所在的層次 11 * @return 輸出的字符串 12 */ 13 public String createPrintStr(String name, int level) { 14 // 輸出的前綴 15 String printStr = ""; 16 // 按層次進行縮進 17 for (int i = 0; i < level; i ++) { 18 printStr = printStr + " "; 19 } 20 printStr = printStr + "- " + name; 21 return printStr; 22 } 23 24 /** 25 * 輸出初始給定的目錄 26 * @param dirPath 給定的目錄 27 */ 28 public void printDir(String dirPath){ 29 // 將給定的目錄進行分割 30 String[] dirNameList = dirPath.split("\\\\"); 31 // 設定文件level的base 32 fileLevel = dirNameList.length; 33 // 按格式輸出 34 for (int i = 0; i < dirNameList.length; i ++) { 35 System.out.println(createPrintStr(dirNameList[i], i)); 36 } 37 } 38 39 /** 40 * 輸出給定目錄下的文件,包括子目錄中的文件 41 * @param dirPath 給定的目錄 42 */ 43 public void readFile(String dirPath) { 44 // 創建當前目錄中文件的File對象 45 File file = new File(dirPath); 46 // 取得表明目錄中全部文件的File對象數組 47 File[] list = file.listFiles(); 48 // 遍歷file數組 49 for (int i = 0; i < list.length; i++) { 50 if (list.isDirectory()) { 51 System.out.println(createPrintStr(list.getName(), fileLevel)); 52 fileLevel ++; 53 // 遞歸子目錄 54 readFile(list.getPath()); 55 fileLevel --; 56 } else { 57 System.out.println(createPrintStr(list.getName(), fileLevel)); 58 } 59 } 60 } 61 62 public static void main(String[] args) { 63 ReadDirectory rd = new ReadDirectory(); 64 String dirPath = "D:\\有道詞典"; 65 rd.printDir(dirPath); 66 rd.readFile(dirPath); 67 } 68 }
輸出結果以下:數組