java遍歷給定目錄,樹形結構輸出全部文件,包括子目錄中的文件

(轉自: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 }

輸出結果以下:數組

相關文章
相關標籤/搜索