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);
}
}
列出指定文件的目錄和文件,並進行縮進
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.