package test; import java.io.File; public class ShowDirectoryAndFiles { private int fileLevel;//文件所在的层数 public String createPrintStr(String name,int level) { String printStr = "";//输出的前缀 for(int i=0;i<level;i++) { printStr = printStr + " "; } printStr = printStr+"- "+name; return printStr; } /** * 输出初始给定的目录 * @param dirPath 给定的目录 */ public void printDir(String dirPath) { // 将给定的目录进行分割 String[] dirNameList = dirPath.split("\\"); // 设定文件level的base fileLevel = dirNameList.length; //按格式化输出 for(int i=0;i<dirNameList.length;i++) { System.out.println(createPrintStr(dirNameList[i],i)); } } /** * 输出给定目录下的文件,包括子目录中的文件 * @param dirPath 给定的目录 */ public void readFile(String dirPath) { // 建立当前目录中文件的File对象 File file = new File(dirPath); // 取得代表目录中所有文件的File对象数组 File[] list = file.listFiles(); //遍历file数组 for(int i=0;i<list.length;i++) { if(list[i].isDirectory()) { System.out.println(createPrintStr(list[i].getName(),fileLevel)); fileLevel++; //递归子目录 readFile(list[i].getPath()); fileLevel--; }else { System.out.println(createPrintStr(list[i].getName(),fileLevel)); } } } }