列出给定目录的树形目录结构:
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")); } }