JavaBOY

复习笔记

【小程序】递归实现控制台输出的文件树形结构

要求:给定任意一个目录,以树形方式展现出该目录中的所有子目录和文件,另外展现的时候目录在上面,文件在下面,每一层有缩进。

代码:

package myfiles;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

/**
 * 
 * 项目名称:FileTest
 * 类名称:TreeFile
 * 类描述:将制定目录下得所有子目录和文件按树形输出
 * 创建时间:2011-10-19 下午8:22:40
 * 修改时间:2011-10-19 下午8:22:40
 * 修改备注:
 * @version 
 * 
 */
public class TreeFile
{
	//控制tab键产生树形结构
	private static int time;
	@Test
   public static void deepList(File file)
  {
	   //若为文件或者是空目录
	 if(file.isFile() || 0==file.list().length)
	 {
		 return;
	 }
	 else 
	 {
		 File[] files = file.listFiles();
		 //排序
		 files = sort(files);
		 //遍历排好序的文件数组,打印当前文件或目录名,然后递归目录
		 for(File f : files)
		 {
			 StringBuffer output = new StringBuffer();
			 output.append(getTime(time));
		     output.append(f.getName());
		     System.out.println(output.toString());
		     if(f.isDirectory())
		     {
		    	 time++;
		    	 deepList(f);
		    	 time--;
		     }

		 }
		 
	 }
  }
   //整理文件数组,按先目录,后文件的方式排序
   private static File[] sort(File[] files)
   {
	   List<File> list = new ArrayList<File>();
	   for(File file : files)
	   {
		   if(file.isDirectory())
		   {
			   list.add(file);
		   }
	   }
	   for(File file : files)
	   {
		   if(file.isFile())
		   {
			   list.add(file);
		   }
	   }
	   return list.toArray(new File[files.length]);
   }
   //输出TAB,树形结构缩进
   private static String getTime(int time)
   {
	   StringBuffer sb = new StringBuffer();
	   for(int i = 0; i<time;i++)
	   {
		   sb.append("\t");
	   }
	   return sb.toString(); 
   }
}


 

阅读更多
个人分类: java SE
想对作者说点什么? 我来说一句

树形菜单(数据库)

2013年11月05日 703KB 下载

没有更多推荐了,返回首页

不良信息举报

【小程序】递归实现控制台输出的文件树形结构

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭