2009-09-15 6 views

答えて

4

Java言語仕様で定義されて削除は、唯一の仮想マシンの正常終了のために試行される

可能であれば番号次回起動時にファイルを確認してください。

4

Tim Benderのメモによると、File.deleteOnExit()はファイルが実際に削除されることを保証しません。

しかし、LinuxやOSXなどのUnixシステムでは、のテンポラリファイルを削除することができます(を開く前に)。たとえファイルがディレクトリツリーに存在しなくても、ファイルに開かれたディスクリプタを保持していれば、ファイルの読み書きを続けることができます。また、OSは自動的にファイルが使用するスペースを解放します。プログラムは終了します(または最後の記述子をファイルに閉じます)。

これは、ファイルシステムのセマンティクスが異なり、開いているファイルを削除できないWindowsでは機能しません。しかし、移植可能なコードでは、あなたは単にそれが成功しない場合、deleteOnExit()に頼る、それを開いた後、ファイルを削除しようとすることができます、どうやら、File.deleteOnExit()はWindows上で非常に信頼性がない

File tempFile = File.createTempFile("tempfile", ".tmp"); 
RandomAccessFile fh = new RandomAccessFile (tempFile, "rw"); 

// try to delete the file now, fall back to deletion on exit 
if (!tempFile.delete()) tempFile.deleteOnExit(); 

注こと。したがって、可能であれば、手動で終了して一時ファイルを閉じて削除するようにしてください。詳細はthis answer I wrote to another questionをご覧ください。

+0

これは素晴らしいです – alex

関連する問題