package stream.cn;
import java.io.File;
import java.util.ArrayList;
public class Test1 {
//用于判断目录和文件所处的层次
private static int time;
//递归的方法
public static void Pailie(File file){
if(file.isFile() || 0 ==file.listFiles().length ){
return;
}
else{ //先对目录里边的内容进行处理,应用数组,将名称放进数组中 等待打印
File [] files = file.listFiles();
files = sort(files); // 吧目录里的内容进行排序,吧目录放前,后边放文件
for(File f: files){
StringBuffer output = new StringBuffer();
if(f.isFile()){
output.append(gettab(time));
output.append(f.getName());
}
else{
output.append(gettab(time));
output.append(f.getName());
output.append("\\");
}
System.out.println(output);
if(f.isDirectory()){ //递归条件
time++;
Pailie(f);
time--;
}
}
}
}
//整理文件数组,使得目录在文件之前
private static File[] sort(File[] files){
ArrayList<File> sorted = new ArrayList<File>();
for(File f :files){
if (f.isDirectory()){
sorted.add(f);
}
}
for(File f :files){
if (f.isFile()){
sorted.add(f);
}
}
return sorted.toArray(new File[files.length]);
}
//判断天剑tab 的方法,打印名称前的缩进,整理到一个数组中,
private static String gettab(int time){
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < time; i++) {
buffer.append("\t");
}
return buffer.toString();
}
public static void main(String[] args) {
File file =new File("F:\\肖宾文件\\电影");
Pailie (file);
}
}
原文:http://www.cnblogs.com/Boolean-show/p/5329443.html