Sono di fronte a un problema insolito. Sto costruendo uno strumento che è programmato per funzionare ogni 5 minuti. Raccoglierà i file zip da una particolare directory ed estrae i file (a seconda del nome del file) in una destinazione. Sto usando zipentry
per ottenere ogni nome di file nel file zip e quindi estratto come richiesto, quindi li appoggio (file zip, una volta che ho finito tutti i file in un file zip) in una directory specifica e quindi eliminare il file zip. Ma a volte (non sempre) i file zip non vengono cancellati. Dal momento che sto usando fileutils.forcedelete()
. Ricevo un'eccezione: impossibile eliminare il file. Così ho cambiato il codice per utilizzare fileutils.forcedeleteonexit()
ancora alcuni file rimangono nella fonte.Impossibile cancellare il file zip dopo la decompressione?
Ecco un esempio del mio codice:
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);
Non ci sono corsi d'acqua utilizzati, ma sto ottenendo un blocco su file a volte (non sempre). Quello che sembra essere il bug qui? E 'l'estrazione zip4j che sta causando il problema o altro? Sto usando zip4j 1.3.1.
Quale sistema operativo? Windows ha notori problemi con handle di file e cancellazioni ... – fge
@fge: Windows.tried nel mio locale e su un server (Windows Server 2008 R2) –
@fge Non posso dire quante volte Windows mi ha detto "file in utilizzare "quando si tenta di eliminare un archivio dopo aver estratto i suoi dati, ma è certamente stato più volte di quanto possa contare su entrambe le mani. È colpa dei programmi che non chiudono correttamente i loro handle di file o Windows mantiene alcuni file aperti anche dopo che i programmi li chiudono? – JAB