回答
File.delete()
如果您試圖刪除非空目錄,或者在調用時命名文件根本不存在,則可以返回false
。
(如果有權限問題,則會引發SecurityException)
通常的原因是權限不足(雖然通常會拋出異常),試圖刪除一個不存在的文件或嘗試刪除非空目錄。您完全確定您有權刪除您要刪除的文件嗎?
某些進程可能正在讀取/寫入文件,因此它被鎖定。或者,您的進程無權刪除該文件。如果文件是目錄,則必須首先刪除其中的所有文件,然後才能刪除該目錄。最後是文件不存在的情況,所以delete方法將返回false。
Windows?使用Process Explorer搜索在文件上保留句柄(鎖定)的所有進程(或者如果這是其中任何文件的目錄)。
在Linux上,使用fuser
。
在Linux上打開文件不會阻止該文件被解除鏈接。 – sarnold 2010-07-26 10:12:44
你也可以在Linux上鎖定文件,但很少使用。另外,NFS掛載可以防止文件被刪除。 – 2010-07-26 10:16:52
File.delete()
可能無法刪除文件的原因有很多,包括:
- 你沒有正確的權限以刪除文件
- 該文件所代表的目錄和目錄不是空
- 該文件被另一個進程(比方說在甚至通過相同的工藝未封閉
FileOutputStream
)鎖定, - 的文件不存在
+1沒有遇到未關閉的FOS,但:-) – 2010-07-26 10:17:56
@Aaron Digulla:未關閉的文件只會在某些操作系統(如Windows)上導致問題。在具有Posix文件系統語義的系統上,即使文件被其他東西打開,文件也可以始終未被鏈接。 – 2010-07-26 10:20:31
更多的可能性是1)該文件位於已安裝的設備上只讀,或2)您不幸遇到光盤I/O錯誤。 (這裏也不是這樣,但爲了完整起見...) – 2010-07-26 11:11:45
您可能試圖刪除C:Drive中存在的任何文件,並且您可能沒有權限執行此操作。嘗試將它放在C:之外的任何其他驅動器中,然後運行您的代碼。希望對你有效。 :)
我在我的代碼中有同樣的問題,並發現罪魁禍首實際上是一個未關閉的FileInputStream。關閉FIS後,我的文件刪除沒有任何問題。我希望這可以幫助別人。
- 1. 無法刪除文件Java
- 2. JAVA,我無法刪除空文件夾
- 3. Team Foundation,刪除了csproj文件。源代碼控制無法簽入/刪除
- 4. 爲什麼此代碼無法刪除文件?
- 5. 刪除本地代碼無法
- 6. 無法從代碼中刪除一行?
- 7. 無法刪除文件夾
- 8. 無法刪除文件(jpeg)
- 9. 無法刪除XML文件
- 10. C#無法刪除文件
- 11. MSDeploy無法刪除文件
- 12. 代碼壓縮上傳的文件無法刪除臨時文件
- 13. 從C代碼中刪除文件
- 14. 刪除* .cs,* .Designer.cs代碼隱藏文件?
- 15. 自動刪除.java文件中的代碼行,腳本
- 16. 如何使用Java代碼刪除日誌文件的內容
- 17. 簡單的文件刪除代碼未在Java中
- 18. 無法刪除使用刪除文本文件()
- 19. 從代碼庫中刪除無用的文件
- 20. 代碼刪除
- 21. 無法使用Java代碼
- 22. 無法通過java代碼
- 23. VBScript中無法刪除文件夾
- 24. 無法使用File.delete刪除文件
- 25. 文件正忙。我無法刪除它
- 26. 無法刪除文件使用file.delete()
- 27. php創建無法刪除的文件
- 28. 無法刪除文件,IIS鎖
- 29. iPhone /目標C:無法刪除文件
- 30. Laravel 5.1 - 無法刪除文件
哪個用戶是java運行的? 該用戶是否需要刪除該文件的權限? 你正在運行一個應用程序或一個小程序? – andcoz 2010-07-26 10:09:22