java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

(转自:http://blog.csdn.net/gangwazi0525/article/details/7569701)

 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 }

输出结果如下:

posted @ 2015-07-31 10:21  jenson138  阅读(7528)  评论(0编辑  收藏  举报