2010-12-21 2 views
0

Ich arbeite an einer portablen Java-App, die auf dem PC des Benutzers einige Dateien erzeugt (Windows XP). Jetzt möchte ich diese temporären Dateien nach dem Beenden des Java-Programms löschen. Offensichtlich kann Javas Dateilöschungsmechanismus nicht vertraut werden. Auch wenn ich eine Datei beim Beenden (file.deleteOnExit()) als gelöscht markieren möchte, wird sie meistens nicht gelöscht. Ich verwende einen Wrapper (java2exe), um es als ausführbare Datei auszuführen. Irgendwelche Vorschläge oder Lösungen sind willkommen?Wie lösche ich temporäre Dateien (Bereinigung), die von einem Java-Programm generiert wurden?

Danke, Tief

Antwort

7

Ich vermute, dass der Grund, dass deleteOnExit ausfällt, weil Ihre Anwendung hat noch die Dateien öffnen, wenn die Anwendung beendet wird. Dies führt dazu, dass das Löschen aufgrund von veralteten Dateisperren unter Windows fehlschlägt.

Die Lösung besteht darin, alle Streams für Ihre temporären Dateien zu schließen, bevor Sie beenden.

+0

Ja, aber die Sache ist, Benutzer öffnet diese Dateien mit System-Standard-Datei-Anwendungen (z. B. Acrobat für PDF-Dateien, IE für HTML-Dateien) und wenn die Dateien geöffnet sind, wenn die Anwendung beendet wird, gibt es keine Möglichkeit, die Dateien zu schließen. Gibt es eine elegante Lösung für dieses Problem? –

+0

Wenn die Dateien von einer externen Anwendung geöffnet werden, haben Sie ein echtes Problem. Zunächst einmal sollte die Java-Anwendung * nicht * versuchen, sie zu löschen, bis die externe App beendet wurde. –

Verwandte Themen