列出指定文件的目錄和文件,並進行縮進

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

	}

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章