import java.io.File;
import java.util.ArrayList;
public class FileTest {
//当前目录所处的层次
private static int level;
public static void showFiles(File file) {
//递归出口条件
if (file.isFile() || file.listFiles().length == 0) {
return;
} else {
File[] files = file.listFiles();
sort(files);
for (File f : files) {
StringBuffer output = new StringBuffer();
if (f.isFile()) {
output.append(getTabs(level));
output.append(f.getName());
} else {
//打印目录,但是目录有可能为空
output.append(getTabs(level));
output.append(f.getName());
output.append("\\");
}
System.out.println(output.toString());
if (f.isDirectory()) {
level++;
showFiles(f);
//递归返回的时候,层次递减
level--;
}
}
}
}
// 对当前目录下的目录和文件进行排序(目录排在前面,文件排在后面)
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]);
}
// 添加缩进制表符tab
private static String getTabs(int level) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < level; i++) {
sb.append("\t");
}
return sb.toString();
}
public static void main(String[] args) {
File file = new File("C:\\apache-ant-1.8.2");
showFiles(file);
}
}
列出指定文件的目录和文件,并进行缩进
最新推荐文章于 2019-06-19 14:08:03 发布