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

来源:互联网 发布:30岁护肤品 知乎 编辑:程序博客网 时间:2024/05/16 07:05

代码如下:

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


public class ListAllTest
{
//用于判断目录或文件所处的层次
private static int time;


//递归的方法
public static void deepList(File file)
{
if(file.isFile() || 0 == file.listFiles().length)
{

return ;
}

else
{
File[] files = file.listFiles();

files = sort(files);

for(File f : files)
{
StringBuffer output = new StringBuffer();

if(f.isFile())
{
output.append(getTabs(time));

output.append(f.getName());
}

else
{
output.append(getTabs(time));
output.append(f.getName());
output.append("\\");

}

System.out.println(output);

if(f.isDirectory())
{
time++;

deepList(f);

time--;
}
}
}


}



//整理文件数组 ,使得目录排在文件之前

private static File[] sort(File[] files)
{
ArrayList<File> sorted = new ArrayList<File>();

for(File f : files)
{
if(f.isDirectory())
{
sorted.add(f);
}
}

for(File f : files)
{
if(f.isFile())
{
sorted.add(f);
}
}

return sorted.toArray(new File[files.length]);
}

private static String getTabs(int time)
{
StringBuffer buffer = new StringBuffer();

for(int i = 0 ; i < time ; i++)
{
buffer.append("\t");
}

return buffer.toString();
}

public static void main(String[] args)
{
File file = new File("d:\\E信");

deepList(file);
}



}

0 0
原创粉丝点击