標籤:
題目:給定一個目錄,要求輸出這個目錄下面的子目錄和子檔案
邏輯:
- 先判斷給定的是不是一個合法的目錄,如果不是,則提示給定錯誤
- 如果是目錄,那麼使用File.listFile()獲得這個目錄下檔案名稱的數組
- 迴圈遍曆輸出這個數組元素
- 輸出名稱之後,接著判斷這個元素是檔案還是目錄
- 如果是目錄,繼續調用本方法來輸出子目錄
代碼如下:
/** * 輸出指定目錄下的所有子目錄和子檔案 * * @author LGB * */public class HelloFile { public static void main(String[] args) { printFile(new File("D:\\test")); } public static void printFile(File file) { if (file.isFile()) { System.out.println("您給定的是一個檔案"); // 判斷給定目錄是否是一個合法的目錄,如果不是,輸出提示 } else { File[] fileLists = file.listFiles(); // 如果是目錄,擷取該目錄下的內容集合 for (int i = 0; i < fileLists.length; i++) { // 迴圈遍曆這個集合內容 System.out.println(fileLists[i].getName()); //輸出元素名稱 if (fileLists[i].isDirectory()) { //判斷元素是不是一個目錄 printFile(fileLists[i]); //如果是目錄,繼續調用本方法來輸出其子目錄 } } } }}
執行成功,結果正確,但是樣子太醜陋了,
我們還需要加上縮排改造一下
public class HelloFile { public static void main(String[] args) { printFile(new File("D:\\test"),1); } public static void printFile(File file,int tab) { if (file.isFile()) { System.out.println("您給定的是一個檔案"); // 判斷給定目錄是否是一個合法的目錄,如果不是,輸出提示 } else { File[] fileLists = file.listFiles(); // 如果是目錄,擷取該目錄下的內容集合 for (int i = 0; i < fileLists.length; i++) { // 迴圈遍曆這個集合內容 for (int j = 0; j < tab; j++) { //輸出縮排 System.out.print("|---"); } System.out.println(fileLists[i].getName()); //輸出元素名稱 if (fileLists[i].isDirectory()) { //判斷元素是不是一個目錄 printFile(fileLists[i],tab+1); //如果是目錄,繼續調用本方法來輸出其子目錄,因為是其子目錄,所以縮排次數 + 1 } } } }}
結果為:
JAVA輸出指定目錄下的子目錄和子檔案