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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?

d'avance