java.io.File里的delete操作很實用也很常用,可以用來刪除單獨的文件和某一目錄。但有時候會出現delete失敗的情況,出現這種情況的原因一般有以下幾種:
1、刪除時還有其他程序在使用該文件,此時將無法正確刪除
2、沒有close關閉和該文件相關的所有輸入輸出流等,導致無法刪除(這一點是最容易忘記的,你犯的可能就是這一條)
3、當刪除某一目錄時,必須保證該目錄下沒有其他文件才能正確刪除,否則將刪除失敗。這里可以采用listFiles對目錄下的文件或者目錄進行處理。
下面給出一個具體的例子:
File f = new File(path); DataOutputStream dos = new DataOutputStream(new FileOutputStream(f)); if (f.exists()) { System.out.println(f.getAbsoluteFile()); if (!f.delete()) { System.out.println("請關閉使用該文件的所有進程或者流!!"); } else { System.out.println(f.getName()+" 成功被刪除!"); } }
此時f是無法delete的,即f.delete()將返回false,原因就在於沒有關閉dos.所以需要在if之前加入一句f.close(),這樣就可以刪除成功了。
File f = new File(path); DataOutputStream dos = new DataOutputStream(new FileOutputStream(f)); dos.close(); if (f.exists()) { System.out.println(f.getAbsoluteFile()); if (!f.delete()) { System.out.println("請關閉使用該文件的所有進程或者流!!"); } else { System.out.println(f.getName()+" 成功被刪除!"); } }