Bonjour,
j'ai écrit un code en Java qui utilise la classe java.util.zip qui réalise la compression au format zip d'un répertoire contenat plusieurs fichiers.

Ce programme marche bien avec de petits fichiers, mais ne prend pas en compte les fichiers lorsque ceux-ci sont gros (plus d'un méga).

Pour plus de clarté voici le 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
62
 
import java.util.zip.*;
import java.util.* ;
import java.io.* ;
import java.io.File; //permet de lister les fichiers dans un répertoires
 
public class compress
{
	public static void main(String [] argv) throws IOException
	{
		int BUFFER = 2048;
		byte data[] = new byte[BUFFER];
		File repertoire = new File("ACompresser");
            File fichier;
		fichier = null;;
		String [] listeFichiers;	
	      listeFichiers = repertoire.list();
 
 
		// Creation du flux de sortie
		FileOutputStream dest = new FileOutputStream("archive.zip");
		BufferedOutputStream buff = new BufferedOutputStream(dest); 
		ZipOutputStream out = new ZipOutputStream(buff); 
 
		//Méthode et taux de compression
		out.setMethod(ZipOutputStream.DEFLATED);
		out.setLevel(9);
 
 
		//Fichier compression de chaque fichier du répertoire ACompresser
		for (int i = 0; i < listeFichiers.length; i++)
		{     
 
 
                 fichier = new File(listeFichiers[i]);
		     if (fichier.exists())
		     {	
                        System.out.println("Lecture aprés test d'existance");
				System.out.println("Nom du fichier : " +  fichier.getName()); 
				FileInputStream fi = new FileInputStream(listeFichiers[i]); 
				BufferedInputStream buffi = new BufferedInputStream(fi);
				ZipEntry entry = new ZipEntry(listeFichiers[i]);
 
				//Affectation de l'entrée au flux de sortie
				out.putNextEntry(entry);
 
				//Ecriture 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);
				} 
 
				//Fermeture des flux
				out.closeEntry();
				buffi.close();
		   }        
            }
		out.close();
	}
 
}
Est ce que quelqu'un saurait comment résoudre ce problème.

Merci d'avance pour votre aide.

[ Modéré par Viena ]
Ajout d'un tag et modification du titre : Pour la compréhension de tous, utilisez un titre clair et les tags ! merci.

Les Règles du Forum