Ich stehe vor einem ungewöhnlichen Problem. Ich baue ein Tool, das alle 5 Minuten ausgeführt werden soll. Es wird die Zip-Dateien aus einem bestimmten Verzeichnis abholen und Dateien (abhängig vom Dateinamen) zu einem Ziel extrahieren. Ich benutze zipentry
, um jeden Dateinamen in zip-Datei zu erhalten und dann extrahieren, wie erforderlich, dann ich sie zurück (Zip-Dateien, sobald ich alle Dateien in einer Zip) zu einem bestimmten Verzeichnis und löschen Sie dann die Zip-Datei. Aber manchmal (nicht immer) werden die Zip-Dateien nicht gelöscht. Da verwende ich fileutils.forcedelete()
. Ich erhalte eine Ausnahme: kann die Datei nicht löschen. Also habe ich den Code geändert, um fileutils.forcedeleteonexit()
noch einige Dateien in der Quelle zu verwenden. HierKann die ZIP-Datei nach dem Entpacken nicht löschen?
ist eine Probe von meinem Code:
sourceFile=new file(zipfile);
zipFile = new ZipFile(sourceFile);
zEnum = (Enumeration<ZipEntry>) zipFile.entries();
for (int a = 0; a < zipFile.size(); a++)
{
ZipEntry zE = zEnum.nextElement();
//Function uses zip4j for extracting. No streams used.
extract(String sourceZipFile, String fileNameToExtract, String outputFolder);
}
//I tried it with finally either
zipFile.close();
//Using fileutils to copy. No streams used.
copyFile(sourceFile, backup);
FileUtils.forceDeleteOnExit(sourceFile);
Es gibt keine Ströme verwendet, aber ich erhalte eine Sperre auf Dateien manchmal (nicht immer). Was scheint hier der Fehler zu sein? Ist es die Extraktion von zip4j, die das Problem oder etwas anderes verursacht? Ich benutze zip4j 1.3.1.
Was O? Windows hat notorische Probleme mit Dateigriffen und Löschungen ... – fge
@fge: Windows.tried in meinem lokalen und auf einem Server (Windows Server 2008 R2) –
@fge Ich kann nicht sagen, wie oft Windows mir gesagt hat "file in Verwenden Sie "wenn Sie versuchen, ein Archiv nach dem Extrahieren seiner Daten zu löschen, aber es war sicherlich öfter, als ich auf beiden Händen zählen kann. Ist es der Fehler von Programmen, die ihre Datei-Handles nicht ordnungsgemäß schließen, oder hält Windows bestimmte Dateien auch nach dem Schließen von Programmen geöffnet? – JAB