java File delete()執行失敗原因(轉)


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()+" 成功被刪除!");
                    }
                }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM