Ajouter un commentaire

manurevait

fredericmazue wrote:
Pour faire un zip il suffit d'ajouter des entrées sous forme de fichiers à priori pré-existants et contenant les données. Ils correspondent à quelle entrée/fichier les bytes que tu écris *directement* dans le zip ?

Si j'ai bien compris il suffit de transmetre le fichier à compresser (sans le faire byte par byte) mais je n'ai pas trouver comment le faire, je n'ai rien trouver ni sur le net ni dans mon bouquin Java.
voici ma methode:

	public String ZipOneFile(String zipFileName, String source )
	{
		int retour = 0;
		
   		/*************
   		 * Compression
   		 *************/
		try {
      	
      		// création d'un flux d'écriture sur fichier
			FileOutputStream dest = new FileOutputStream( zipFileName+ ".zip");
			 
			// calcul du checksum : Adler32 (plus rapide) ou CRC32
			CheckedOutputStream checksum = new CheckedOutputStream(dest, new Adler32());
			
			// création d'un buffer d'écriture
			BufferedOutputStream buff = new BufferedOutputStream(checksum);
			
			// création d'un flux d'écriture Zip
			ZipOutputStream out = new ZipOutputStream(buff);			
			 
         		// spécification de la méthode de compression
			out.setMethod(ZipOutputStream.DEFLATED);

			// spécifier la qualité de la compression 0..9
			out.setLevel(Deflater.BEST_COMPRESSION);
			         
         		// buffer temporaire des données ‡ écriture dans le flux de sortie
			byte data[] = new byte[BUFFER];
							
           	// création d'un flux de lecture
	            FileInputStream fi = new FileInputStream(source);
	            
	            // création d'un tampon de lecture sur ce flux
	            BufferedInputStream buffi = new BufferedInputStream(fi, BUFFER);
	            
	            // création d'en entrée Zip pour ce fichier
	            ZipEntry entry = new ZipEntry(unAccent(source));
	            
	            // ajout de cette entrée dans le flux d'écriture de l'archive Zip
	            out.putNextEntry(entry);
	            
	            // écriture du fichier par paquet de BUFFER octets
	            // dans le flux d'écriture
	            int count;
	            while((count = buffi.read(data, 0, BUFFER)) != -1) {
	               out.write(data, 0, count);
				}
	            
				// Close the current entry
         		out.closeEntry();
         		
         	    // fermeture du flux de lecture
				buffi.close();
			
			// fermeture du flux d'écriture
			out.close();
			buff.close();
			checksum.close();
			dest.close();
         
		// traitement de toute exception         
		} catch(Exception e) {
			e.printStackTrace();
			test.log_erreur( e.getMessage(), this );
			return "pb"+retour;
		}
		return "0";
      
   }

Merci pour tes lumières :idea:

Manu

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
 U   U  N   N  U   U   SSS   N   N 
U U NN N U U S NN N
U U N N N U U SSS N N N
U U N NN U U S N NN
UUU N N UUU SSSS N N