你的位置:首页 > Java教程

[Java教程]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 }

输出结果如下: