2014-05-01 190 views
0

我有下面的代碼來刪除文件夾及其內容,但它只刪除內容而不是文件夾。我怎樣才能改變它來刪除文件夾呢?Java - 刪除文件夾及其內容

private static void deleteCat(String catName) { 
     File fileToDel = new File("Catalogues/" + catName); 
     if (fileToDel.exists()) { 
      if (fileToDel.isDirectory()) { 
       if (fileToDel.list().length > 0) { 
        for (String s : fileToDel.list()) { 
         deleteCat(catName + "/" + s); 
        } 
       } 
      } else { 
       if (fileToDel.delete()) { 
        System.out.println("File " + fileToDel + " deleted"); 
       } else { 
        System.out.println("Unable To Del " + fileToDel); 
       } 
      } 

     } 
    } 

回答

4

刪除第10行的else。fileToDel.delete()必須執行anycase。

1

它只刪除您的內容,因爲您不刪除目錄。在你的directoryroutine結尾添加命令來刪除你的目錄。

if (fileToDel.isDirectory()) { 
    if (fileToDel.list().length > 0) { 
      for (String s : fileToDel.list()) { 
       deleteCat(catName + "/" + s); 
      } 
    } 
    fileToDel.delete(); //delete directory 
} else ... 

也可以看看在Apache的commons-io的LIB(http://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html#deleteDirectory(java.io.File)

2

當你想刪除一個目錄,你已經不包含的代碼刪除目錄本身

private static void deleteCat(String catName) { 
    File fileToDel = new File("Catalogues/" + catName); 
    if (fileToDel.exists()) { 
     if (fileToDel.isDirectory()) { 
      if (fileToDel.list().length > 0) { 
       for (String s : fileToDel.list()) { 
        deleteCat(catName + "/" + s); 
       } 
      } 
      fileToDel.delete(); 
     } 
     //Always want to delete the given file, so remove the 'else' 
     if (fileToDel.delete()) { 
      System.out.println("File " + fileToDel + " deleted"); 
     } else { 
      System.out.println("Unable To Del " + fileToDel); 
     } 
    } 
} 
相關問題