2016-06-06 1 views
0

J'utilise junrar mais j'ai un problème pour supprimer l'archive après extraction. Voici le code:Extraire le fichier rar via Junrar, puis supprimer l'archive

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

après ce code, je ne peux pas supprimer le fichier associé à archiveFilePath. J'ai essayé à la fois new File(archiveFilePath).delete(); et apache commons io

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

mais je reçois faux ou une exception parce que le fichier est utilisé par un autre processus. Quelqu'un a eu le même problème avec cette bibliothèque? Puis-je supprimer le fichier d'autres façons? Merci

Ici, il y a une confirmation de la question: https://github.com/edmund-wagner/junrar/issues/28

Répondre

1

Le code est ExtractArchive.extractArchive(...) défaut car elle crée une instance interne Archive mais il appelle jamais close() à libérer des ressources et c'est des descripteurs de fichiers. Sous Windows, il en résulte un fichier verrouillé qui ne peut pas être supprimé sauf si la JVM se termine ou si le garbage collector a collecté toutes les instances d'objet de cette archive et a donc libéré les descripteurs de fichiers.

Sous Windows, il n'y a pas d'autre moyen de supprimer le fichier!

+0

Comme je le pensais, pour le réparer, j'ai remplacé la méthode extractArchive incluant un nouvel objet Archive dans les parenthèses try() – luca