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

来源:互联网 发布:匡恩网络待遇 编辑:程序博客网 时间:2024/05/24 03:26

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

代码:

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();    }}


 

原创粉丝点击