Bonjour,

j'essai de compresser un repertoire mais mon .zip reste vide...

voici mon code:

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
60
61
 
public void compresser (File file,String strDest) throws Exception{
		ArrayList<String> liste = new ArrayList<String>();
 
		this.listerFichier(file, liste);
 
		// taille de tampon
		final int BUFFER = 2048;
		byte data[] = new byte[BUFFER];
 
		//flux d'écriture  (archive)
		FileOutputStream dest = new FileOutputStream(strDest);
	//	FileInputStream dest2 = new FileInputStream(strDest);
		// buffer de sorti
		BufferedOutputStream buff = new BufferedOutputStream(dest);
	//	Buff
		//flux d'écriture
		ZipOutputStream out = new ZipOutputStream(buff);
		out.setMethod(ZipOutputStream.DEFLATED); // methode de compression
		out.setLevel(9); // niveau de compression
		byte[] buf = new byte[1024];
 
 
		int taille = liste.size();
		for (int i  = 0 ; i< taille ; i++ ){
			// on recupère le fichier
			System.out.println(liste.get(i));
			FileInputStream  fi =  new FileInputStream(liste.get(i));
 
			//buffer d'entree
//			BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
//			
			//creation d'une entree zip
			ZipEntry entry = new ZipEntry(liste.get(i));
 
			// affectation de l'entree au flux de sortie
			out.putNextEntry(entry);
 
			//Écriture des entrées dans le flux de sortie par paquet de taille
			//égale aux tampons d’entrée et de sortie
			int count;
//			while((count = buffi.read(data, 0, BUFFER)) != -1) {
//			out.write(data, 0, count);
//			}
 
			int len;
	        while ((len = fi.read(buf)) > 0) {
	            out.write(buf, 0, len);
	        }
 
 
			//fermeture de l'entree en cours et du flux 
			out.closeEntry();
			fi.close();
 
 
		}
 
	//	out.close();
 
	}
ma methode qui liste les fichiers du dossier

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
 
 
public void listerFichier(File file,ArrayList liste){
 
 
		// si c'est un répertoire
		if (file.isDirectory()){
 
			// on liste les sous dossier et fichier qu'il contient
			File[] files = file.listFiles();
 
			// si non vide
			if (files!=null){
				int taille= files.length;
 
				for (int i = 0; i< taille ; i++){
					// on regarde si c'est un repertoire
					if (files[i].isDirectory()){
						this.listerFichier(files[i],liste);
					}
					else
						// on ajoute a la liste des fichiers
						liste.add(files[i].getAbsolutePath());
 
				}
			}
		}
		else
			//on ajoute a la liste des fichiers
			liste.add(file.getAbsolutePath());
 
	}
quelqu'un peut me dire ce qui va pas??

merci