Problème extraction fichier d'un zip
:salut:
J'ai un soucis avec mon code d'extraction de fichiers d'un fichier zip. Certains fichiers extraits ne sont pas entier et je n'arrive pas à voir pourquoi.
Voici la fonction correspondante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| public static void unzip (File zipfile) {
ZipInputStream zis = null;
ZipEntry ze = null;
OutputStream fos = null;
File folder = null;
try {
zis = new ZipInputStream (new BufferedInputStream (new FileInputStream (zipfile.getCanonicalFile ())));
folder = new File ("./tmp/");
while ((ze = zis.getNextEntry ()) != null) {
File f = new File (folder.getCanonicalPath (), ze.getName ());
if (ze.isDirectory ()) {
f.mkdirs ();
continue;
}
f.getParentFile ().mkdirs ();
fos = new BufferedOutputStream (new FileOutputStream (f));
byte[] buf = new byte[(int)ze.getSize ()];
int bytesRead;
while (-1 != (bytesRead = zis.read (buf))) {
fos.write (buf, 0, bytesRead);
}
buf = null;
f = null;
}
File[] listFiles = folder.listFiles ();
for (int i = 0;i < listFiles.length;i++) {
if (!listFiles[i].getName ().substring (listFiles[i].getName ().length () - 3, listFiles[i].getName ().length ()).equals ("xml")) {
listFiles[i].delete ();
}
}
}
catch (FileNotFoundException e) {
system.out.println("FileNotFoundError");
}
catch (IOException e) {
system.out.println("IOError");
}
catch (SecurityException e) {
system.out.println("SecurityError");
}
finally {
try {
fos.close ();
zis.close ();
}
catch (IOException e) {
system.out.println("IOError");
}
}
} |
Avez-vous une idée de ce que j'aurais pu mal faire pour que ce problème ce produise ?
:merci: d'avance :)