2010-12-21 6 views
0

私は、ユーザーのPC(Windows XP)でオンザフライでいくつかのファイルを生成する移植可能なJavaアプリケーションに取り組んでいます。さて、私が望むのは、javaプログラムの終了後にそれらの一時ファイルを削除することです。明らかに、javaのファイル削除メカニズムは信頼できません。たとえ、ファイルをexit(file.deleteOnExit())で削除するようにマークしても、ほとんどの場合は削除されません。私はラッパー(java2exe)を使って実行可能ファイルとして実行します。提案や解決策は大歓迎ですか?Javaプログラムによって生成された一時ファイル(クリーンアップ)を削除する方法はありますか?

おかげで、 ディープ

答えて

7

私はあなたのアプリケーションがまだファイルがアプリケーション終了時開いているので、deleteOnExitが失敗した理由があると思われます。これにより、ファイルのロックが長引いているため、Windowsでの削除が失敗します。

解決方法は、終了する前に一時ファイルのすべてのストリームを閉じることです。

+0

はい、ユーザーはシステムのデフォルトのファイルアプリケーション(たとえば、acrobat for pdfファイル、IE for htmlファイル)を使用してこれらのファイルを開き、アプリケーションが終了したときにファイルが開いていれば、ファイルを閉じる方法はありません。この問題に対する洗練されたソリューションはありますか? –

+0

ファイルがいくつかの外部アプリケーションによって開かれている場合は、本当の問題があります。まず、Javaアプリケーションは、外部アプリが終了するまで削除しないでください。 –

関連する問題