我正在編寫一個Maven插件,它使用File.delete()
和File.renameTo(File)
JDK方法刪除並重命名各種文件。無法重命名或刪除文件實例
大約每隔一段時間我運行插件,其中一個操作失敗,每次失敗時它是一個不能被刪除或重命名的不同文件。爲什麼文件不能被刪除的一個明顯的解釋是另一個進程正在使用它(我在Windows上運行),但我不知道哪個進程可能是負責任的。事實上這個問題不能一致地重現,這表明線程問題,但AFAIK,Maven插件運行在一個線程中。很難得到有關問題原因的任何信息,因爲上面提到的方法不會拋出異常,它們只會返回false。
有沒有一種方法來編程檢測鎖定文件和持有鎖的進程的名稱?或者,如果任何人有關於如何去調試諸如此類的問題的其他建議,請發送它們。
謝謝, 唐
很難說沒有看到任何代碼。在黑暗中刺幾下:當您打開Windows的文件資源管理器並查看相關文件時,您可能無法刪除它,因爲資源管理器正在鎖定該文件。你確定你正在關閉IO流嗎?不吞嚥可能提供線索爲什麼失敗的異常? – 2010-08-13 07:58:49