Supprimer un fichier zip à décompresser après en java
Comment supprimer un fichier zip en java? fichier.supprimer la méthode renvoie la valeur false. Pourquoi?
File file = new File("/mibook/"+mFilename+"/"+mZipname.toString());
boolean deleted = file.delete();
edit:
La règle "Répertoire vide avant la suppression.." ne s'applique pour fichier zip?
Mon fichier de décompression code
public void unzip() throws IOException { FileInputStream fin=null; ZipInputStream zin=null; File file =null; ZipEntry ze ; FileOutputStream fout=null; try{ System.out.println(_zipFile ); System.out.println(_location); fin = new FileInputStream(_zipFile); zin = new ZipInputStream(fin); ze= null; byte[] buffer = new byte[1024]; int length; while ((ze = zin.getNextEntry()) != null) { file = new File((_location +"/" + ze.getName())); file.getParentFile().mkdirs(); fout= new FileOutputStream(_location + ze.getName()); while ((length = zin.read(buffer))>0) { fout.write(buffer, 0, length); } zin.closeEntry(); fout.close();
} zin.close(); }catch(Exception e) { Log.e("Decompress", "unzip", e); }
finally {fin.close(); zin.close(); fout.close(); } }
Merci de poster le code que vous avez utilisé.
édité ma question
Pour mieux aider plus tôt, après une SSCCE (pscode.org/sscce.html). Étant donné que le code de problème, télécharge un Zip, vous pouvez utiliser le basicservice.zip fichier sur mon site (pscode.org/jws/api.html#bs), il est faible (environ 3 ko.OriginalL'auteur vnshetty | 2011-03-07
Vous devez vous connecter pour publier un commentaire.
Si
file.delete()
renvoie la valeur false, alors j'imagine qu'un autre processus a le fichier zip ouvrir - ou peut-être même votre propre processus.file.exists()
retour?En supposant que vous avez fait tout cela en Java, le problème le plus probable est que votre code a encore le ZipStream ouvrir.
Je suis d'accord avec Stephen. Je soupçonne que vous avez omis de fermer un flux de données quelque part. Nous ne pouvons pas dire sans voir votre code.
Édité mon questn.
Je suis heureux, mais pour l'intégralité de chacun de vos
close
méthodes doit être dans son propre bloc finally (ou utiliser quelque chose comme la Goyave estcloseQuietly
méthode). Sinon, si proches l'un de la méthode lève une exception, les autres cours d'eau ne sera pas fermé.OriginalL'auteur Jon Skeet
Vous devez assurez-vous de fermer votre ZipFile.
J'ai eu par exemple:
OriginalL'auteur joe
Ceci est très fréquent lorsque vous tentez de supprimer un fichier que vous avez créé. Assurez-vous de
close
le FileWriter vous avez utilisé pour créer le fichier décompressé.Si vous ne pouvez pas comprendre où pour fermer le fichier, votre meilleur pari peut être d'appeler
file.deleteOnExit()
qui doit réussir, même si vous avez accidentellement laisser un peu de descripteurs de fichiers ouverts.OriginalL'auteur Dan Fabulich
Utilisation :
FileUtils.delete(yourFile);
Ce corrigé mon problème
OriginalL'auteur Keita