2013-03-15 37 views
0

我在這裏看到類似的問題關於File.delete()不能按預期工作,但是這與Java實際創建文件的方式略有不同,但不會刪除它它完成後。Java不刪除自己創建的文件

File genFile = new File(parsed); 
... sends file data across socket ... 
genFile.delete(); 

生成的文件(genFile)先前在程序生成並寫入,但是當我嘗試將其刪除,文件只是留在目錄中 - 沒有錯誤信息等任何想法,有什麼事情正在發生?

+6

您是否在寫入文件後正確關閉了輸出流?或從它讀取後的任何輸入流? – radai 2013-03-15 04:55:46

+0

設置genFile = null;除非對象被垃圾收集,否則文件通常不會被刪除。 – 2013-03-15 04:56:46

+0

請分享從java創建文件的代碼。 – 2013-03-15 04:57:48

回答

0

你需要關閉()試圖刪除()之前的文件連接

+0

這工作 - 謝謝:)。必須關閉InputStreamReader。 – 2013-03-15 05:11:03

1

File.delete()不好,因爲它沒有提到錯誤。

嘗試

java.nio.file.Files.delete(file.toPath()); // throws IOException 

它可能會告訴你爲什麼文件無法刪除的原因。 (或者根本不:)

0

添加

genFile.close(); 

genFile.delete(); 

流不會在您嘗試刪除文件時已被刷新,因此先關閉該流並刪除該文件。

0

如果你在Windows或* Unix下運行,那麼這些信息將是相關的。

Windows不會刪除任何應用程序打開的文件;在刪除之前關閉文件。

Unix變種應該繼續並刪除文件(釋放inode)。