2016-06-06 2 views
0

Ich verwende junrar, aber ich habe ein Problem, das Archiv nach der Extraktion zu löschen. Dies ist der Code:Extrahieren Sie Rar-Datei durch Junrar und löschen Sie dann das Archiv

ExtractArchive extractArchive = new ExtractArchive(); 
extractArchive.extractArchive(new File(archiveFilePath), new File(destDirectory)); 

nach diesem Code, den ich nicht Datei zugeordnet archiveFilePath löschen. Ich habe versucht, sowohl new File(archiveFilePath).delete(); und apache commons io

FileDeleteStrategy.FORCE.delete(new File(archiveFilePath)); 

aber ich erhalte falsch oder eine Ausnahme, weil Datei von einem anderen Prozess verwendet wird. Jemand hat das gleiche Problem mit dieser Bibliothek gehabt? Kann ich die Datei auf andere Weise entfernen? Dank

Hier gibt es eine confirm der Ausgabe: https://github.com/edmund-wagner/junrar/issues/28

Antwort

1

Der Code in ExtractArchive.extractArchive(...) ist defekt, wie es intern eine Archive Instanz erstellt, aber es ruft nie close() es die Ressourcen und Datei-Handles freizugeben.

Unter Windows führt dies zu einer gesperrten Datei, die nicht gelöscht werden kann, wenn die JVM nicht beendet wird oder der Garbage Collector alle Objektinstanzen dieses Archivs erfasst und daher die Dateizugriffsnummern freigegeben hat.

Unter Windows gibt es keine andere Möglichkeit, die Datei zu löschen!

+0

Wie ich dachte, um es zu beheben, habe ich die extractArchive-Methode einschließlich neuer Archiv-Objekt in try() Klammern überschrieben – luca

Verwandte Themen