Java實現遞歸刪除目錄下全部文件

遞歸刪除目錄下全部文件

什麼是遞歸

要遞歸首先須要有方法。遞歸,即方法本身調用本身。通常在程序中不多使用,但在這個實現中,咱們沒法知道文件夾的深度,更沒法根據深度來實現循環的嵌套。java

遞歸兩個重要條件:數組

  • 終止邊界
  • 重複執行相同的問題

例如咱們要實現求1*2*3*4*5,咱們能夠把5和1*2*3*4的結果相乘,而如何獲取1*2*3*4的結果呢,天然就是4與1*2*3*4的結果相乘了。而在這一過程當中,咱們始終是作同一件事:將n與n-1的階乘進行相乘。固然不可能無止境的乘下去,因此咱們須要一個終止條件:n == 1。在這兩個條件下,咱們即可以實現遞歸求得n的階乘了。ide

用代碼實現以下:測試

1 public static int jieCheng(int n) {
2     if (n==1) {            //終止條件
3         return 1;
4     } else {
5         return n * jieCheng(n-1);        //n * (n-1)!
6     }
7 }
遞歸求階乘

類 File

Java文件類以抽象的方式表明文件名和目錄路徑名。該類主要用於文件和目錄的建立、文件的查找和文件的刪除等。spa

用到的方法

  • File(String pathname) 經過將給定路徑名字符串轉換爲抽象路徑名來建立一個新 File 實例。
  • isDirectory() 測試此抽象路徑名錶示的文件是不是一個目錄。
  • listFiles() 返回一個抽象路徑名數組,這些路徑名錶示此抽象路徑名錶示的目錄中的文件(獲取子目錄文件)。
  • delete() 刪除此抽象路徑名錶示的文件或目錄,若是文件夾中有文件存在,則該文件夾不能被刪除。

要刪除一個目錄下的全部文件和文件夾,咱們能夠分爲這麼幾步:3d

  1. 首先咱們指定一個根目錄做爲咱們要刪除的對象;
  2. 例舉該目錄下全部子文件和文件夾;
  3. 遍歷子目錄文件,若是爲文件,則直接刪除;若是爲文件夾,則執行 2 
  4. 將全部子文件、子文件夾都刪除完畢後,刪除文件夾自己

以下圖所示,把圈表明文件,方塊表明文件夾,則獲得以下的執行順序:code

        

  1. 判斷file爲不爲空的文件夾,到2
  2. 判斷subfile1爲不爲空的文件夾,到3
  3. 判斷srf1爲文件,刪除本身,到4
  4. 判斷sf2爲空文件夾,刪除本身,到5
  5. 此時subfile1中全部內容都已刪除爲空,subfile1刪除本身,到6
  6. subfile2不爲空文件夾,到7
  7. slf爲文件,刪除本身,到8
  8. subfile2爲空文件夾,刪除本身,到9
  9. 此時根目錄file已經爲空文件夾了,再刪除本身。至此,全部文件和文件夾刪除完畢

用代碼實現就是如下的效果:對象

 1 public static void delDir(File file) {
 2     if (file.isDirectory()) {
 3         File zFiles[] = file.listFiles();
 4         for (File file2 : zFiles) {
 5             delDir(file2);
 6         }
 7         file.delete();
 8     } else {
 9         file.delete();
10     }
11 }
刪除全部文件
相關文章
相關標籤/搜索