要求:给定任意一个目录,以树形方式展现出该目录中的所有子目录和文件,另外展现的时候目录在上面,文件在下面,每一层有缩进。
代码:
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();
}
}
这篇博客介绍如何使用递归方法在控制台以树形结构显示指定目录中的子目录和文件,遵循目录在先、文件在后,层级间有缩进的规则。
1万+

被折叠的 条评论
为什么被折叠?



