列目录
Demo 1:
package vamdt.io;import java.io.*;;public class TestFile {public static void main(String[] args) {list("E:/BOOK");}/** * * @param path 将要罗列出结构的路径 * @param level 记录目录层次 */public static void list(String path) {File file = new File(path);System.out.println(file.getName());list(file, 1);}private static void list(File file, int level) {//判断目录是否存在if (!file.exists()) System.out.println("目录不存在");String pre = "";for (int i=0; i<level; i++) pre += "";//System.out.println("pre:" + pre + "Over");File[] childs = file.listFiles();for (int i=0; i<childs.length; i++) {System.out.println(pre + childs[i].getName());if (childs[i].isDirectory()) list(childs[i], level+1);}}}Demo 2:
package vamdt.io;import java.io.File;import java.util.LinkedList;public class ListAllFiles {private static int level;public static void listAll(File file) {//若传入的是文件或者目录内无文件则返回if (file.isFile() || 0 == file.listFiles().length) {return;}File[] files = file.listFiles();files = sort(files);for (File f : files) {StringBuilder sb = new StringBuilder("");if (f.isFile()) {sb.append(getTAB(level));sb.append(f.getName());} else {sb.append(getTAB(level));sb.append(f.getName());sb.append("\\\\");}System.out.println(sb);//若是目录,则需进行递归处理,低前先把目录层次加一//递归完成之后,需要设置把目录曾自减一if(f.isDirectory()) {level++;listAll(f);level--;}}}//设定tab的多少,即目录层次private static String getTAB(int level) {String tab = "";for (int i=0; i<level; i++) tab += "\t";return tab;}//按照目录在上,名字在下的方式进行排序private static File[] sort(File[] file) {LinkedList<File> list = new LinkedList<File>();for (File f : file) {//把目录加在开头,文件加在结尾if(f.isDirectory()) list.addFirst(f);elselist.addLast(f);}//转换为数组返回return list.toArray(new File[file.length]);}public static void main(String[] args) {File f = new File("E:/BOOK");listAll(f);}}