要求:给定任意一个目录,以树形方式展示出该目录中的所有子目录和文件。另外,在展现的时候将目录排在上面,文件排在下面。每一层要加上一个缩进(tab)。
package com.zhk.io; import java.io.File; import java.util.ArrayList; public class ListAllFile { //用于判断目录或文件所在的层次 public static int time; //递归方法 public static void deepList(File file) { if (file.isFile() || (0 == file.list().length)) { return; } else { File[] files = file.listFiles(); files = sort(files); for (File f : files) { StringBuffer buff = new StringBuffer(); if (f.isFile()) { buff.append(getTab(time)); buff.append(f.getName()); } else { buff.append(getTab(time)); buff.append(f.getName()); buff.append("】"); } System.out.println(buff.toString()); if (f.isDirectory()) { time++; deepList(f); time--; } } } } /** * 将文件数组排序,目录放在上面,文件在下面 * @param file * @return */ private static File[] sort(File[] file) { ArrayList<File> list = new ArrayList<File>(); //放入所有目录 for (File f : file) { if (f.isDirectory()) { list.add(f); } } //放入所有文件 for (File f : file) { if (f.isFile()) { list.add(f); } } return list.toArray(new File[file.length]); } /** * 根据文件夹层数添加tab符号 * @param time 文件夹层数 * @return */ private static String getTab(int time) { StringBuffer buff = new StringBuffer(); for (int i = 0; i < time; i++) { buff.append("\t"); } return buff.toString(); } public static void main(String[] args) { // TODO Auto-generated method stub File f = new File("D:/1b9e862b064769805fb005c3"); deepList(f); } }