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

9/6/2015来源:Java教程人气:1810

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的base32                 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 }

输出结果如下: