[size=medium]初学IO,请各位高手多提意见,不足之处请指出[/size]
package org.yang.Recursion;
import java.io.File;
import java.util.Arrays;
import java.util.Comparator;
public class TreeDir {
//i用来判断缩进
int i = 0;
//n级目录就输出n个制表符
public String createMark(int i){
String s = "";
for(int t = 0; t<i;t++){
s = s + "\t";
}
return s;
}
public void showTree(File f){
//根据全限定名中的分隔符的个数判断是几级目录
int j = f.getAbsolutePath().split("\\\\").length-2;
//递归出口:如果为空目录或者是文件时跳出
if(f.isFile() || f.list() == null){
System.out.println(createMark(j)+f.getName());
}
//进到else里面的f一定是目录,且目录下面不为空
else{
System.out.println(createMark(j)+f.getName()+"\\");
File[] fff = f.listFiles();
Arrays.sort(fff,new Comparator<File>(){
@Override
public int compare(File o1, File o2) {
if(o1.isDirectory()&&o2.isFile()){
return -1;
}
else if(o1.isDirectory()&&o2.isDirectory()){
return 0;
}
return 1;
}
});
for(File ff : fff){
showTree(ff);
}
}
}
public static void main(String[] args) {
TreeDir tree = new TreeDir();
tree.showTree(new File("F:\\"));
}
}