1. 程式人生 > >Java實驗5 IO流 第二題

Java實驗5 IO流 第二題

檢視File類的API文件,使用該類實現一個類FileList,它提供兩個靜態方法:1)printContentsInOneDirectory:能夠將輸入引數path所指定的本地磁碟路徑下的所有目錄和檔案的名稱(指明是目錄還是檔案,格式見下圖)打印出來;2)readFileAndDirectory:能夠將輸入引數path所指定的本地磁碟路徑下的所有目錄(包含子目錄)和檔案的名稱(指明是目錄還是檔案,格式見下圖)以層次化結構打印出來。例如,某個目錄下面有子目錄a和檔案Teacher.class,目錄a下面有子目錄b(下面有檔案Teacher.java)和c(下面有檔案Test.java和Test.class)以及檔案1.txt,將該目錄對應的路徑作為輸入引數呼叫該方法,程式的輸出如下圖所示。

file.png

import java.io.*;

public class FileList {
	public static void printContentsInOneDirectory(String path) {
		File file = new File(path);
		try {
			File[] files = file.listFiles();
			for (File i : files) {
				if (i.isFile()) {
					System.out.format("[檔案] %s\n", i.getName());
				} else {
					System.out.format("[目錄] %s\n", i.getName());
				}
			}
		} catch (RuntimeException e) {
			System.out.println("路徑錯誤!");
		}
	}

	public static void readFileAndDirectory(String path, int indent) {
		File file = new File(path);
		try {
			File[] files = file.listFiles();
			for (File i : files) {
				for (int j = 0; j < indent; j++) {
					System.out.print("--");
				}
				if (i.isFile()) {
					System.out.format("[檔案] %s\n", i.getName());
				} else {
					System.out.format("[目錄] %s\n", i.getName());
					readFileAndDirectory(i.getAbsolutePath(), indent + 1);
				}
			}
		} catch (RuntimeException e) {
			System.out.println("路徑錯誤!");
		}

	}
}


public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		FileList.printContentsInOneDirectory("./");
		FileList.readFileAndDirectory("./", 0);
	}

}