1 調用方法 2 public static void main(String[] args) { 3 new FileDeleteTest().clearFiles("D:/temp"); 4 } 5 6 //刪除文件和目錄 7 private void clearFiles(String workspaceRootPath){ 8 File file = new File(workspaceRootPath); 9 if(file.exists()){ 10 deleteFile(file); 11 } 12 } 13 private void deleteFile(File file){ 14 if(file.isDirectory()){ 15 File[] files = file.listFiles(); 16 for(int i=0; i<files.length; i++){ 17 deleteFile(files[i]); 18 } 19 } 20 file.delete(); 21 }
2014.06.14重讀此文檔時發現以前開發時有一個錯誤的寫法,這里寫下來記錄一下
File類有一個方法:deleteOnExit()
最開始我沒注意看的時候以為是deleteOnExists()----刪除文件,假設文件存在。
后來我發現貌似少了個S啊,看了JDK的API發現確實不是上面的那個意思,JDK里是這么說的:
public void deleteOnExit() 在虛擬機終止時,請求刪除此抽象路徑名表示的文件或目錄。 文件(或目錄)將以與注冊相反的順序刪除。調用此方法刪除已注冊為刪除的文件或目錄無效。根據 Java 語言規范中的定義,只有在虛擬機正常終止時,才會嘗試執行刪除操作。 一旦請求了刪除操作,就無法取消該請求。所以應小心使用此方法。