Java—遞迴
阿新 • • 發佈:2020-11-14
遞迴
1. 概述
方法中呼叫當前方法
2. 遞迴需要注意的事項
遞迴次數不能過多,否則記憶體溢位
3. 案例
3.1 獲取指定目錄下的檔名
public class AllDirPath { /* * 遞迴列印所有子目錄中的檔案路徑 */ public static void main(String[] args) { // 1. 獲取要查詢的目錄,判斷該檔案是否存在 File file = new File("e:/培訓"); // 2. 存在,獲取該目錄下所有的檔案 // 3. 判斷此檔案是否為資料夾;是的話繼續第2步,直到結束 // 所以2和3開始需要遞迴;把其封裝到一個方法中 getAllFile(file); } private static void getAllFile(File file) { // 2. 存在,獲取該目錄下所有的檔案 // 3. 判斷此檔案是否為資料夾;是的話繼續第2步,直到結束 if(file.exists()){ File[] listFiles = file.listFiles(); for(File f: listFiles){ if(f.isDirectory()){ getAllFile(f); }else{ System.out.println(f.getName()); } } }else{ System.out.println("要查詢的目錄還不存在,請先去建立!"); } } }
3.2 刪除指定目錄
public class DelDir { public static void main(String[] args) { // 獲取指定要刪除目錄 File file = new File("e:/peixun"); deleteDir(file); } public static void deleteDir(File file) { // 先進行判斷是否為資料夾 if(file.isDirectory()){ File[] listFiles = file.listFiles(); for (File tempFile : listFiles) { deleteDir(tempFile); } // 直至資料夾為空時,刪除資料夾 boolean delete = file.delete(); System.out.println(file.getName() + "..." + delete); }else{ // 不是資料夾直接刪 boolean delete = file.delete(); System.out.println(file.getName() + "..." + delete); } } }