列出给定目录的树形目录结构:
package com.wansha;
import java.io.File;
import java.util.LinkedList;
import java.util.List;
/**
*
* @author sharp
*递归列出给定目录的树形目录结构
*/
public class FileItem {
private int times = 0;//计算当前文件在目录的层次
public void listFileItem(File file){
if(file.isFile() || file.listFiles().length==0){ //递归出口
return ;
}else{
for(File f :fileSort(file.listFiles())){
StringBuffer sb = new StringBuffer();
if(f.isFile()){
sb.append(tab(times));
sb.append(f.getName());
System.out.println(sb);
}else{
sb.append(tab(times));
sb.append(f.getName()+"\\");
System.out.println(sb);
times++;
listFileItem(f);
times--;
}
}
}
}
//对目录列表进行排序,目录在上,文件在下
public File[] fileSort(File[] file){
List<File> list = new LinkedList<File>();
for(File f : file){
if(f.isFile())continue;
list.add(f);
}
for(File f : file){
if(!f.isFile())continue;
list.add(f);
}
return list.toArray(new File[file.length]);
}
//计算缩进
public String tab(int times){
StringBuffer sb = new StringBuffer();
for(int i=0;i<times;i++){
sb.append("\t");
}
return sb.toString();
}
public static void main(String[] args) {
FileItem item = new FileItem();
item.listFileItem(new File("C:/BOOT"));
}
}