现在的位置: 首页 > 综合 > 正文

列出给定目录的树形目录结构

2017年12月26日 ⁄ 综合 ⁄ 共 1020字 ⁄ 字号 评论关闭

列出给定目录的树形目录结构:

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);
	}
	//计算缩进
	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"));
	}
}

抱歉!评论已关闭.