Compression d'un ensemble de données en une seule archive .zip

Contenu du snippet

Ce code vous permet de compresser un ensemble de données en un seul fichier archive d'extension .zip. Il y a des commentaires donc vous pourrez le modifier selon vos besoins.

Source / Exemple :


import java.util.zip.*;
   import java.io.*;

   public class ZIP {
   
      public static void main(String args[]) throws Exception {
      
      //Déclaration de l'archive ZIP
         String rep = "c:compresse";
         String fichzip = "zippé.zip";
         File fichier = new File(rep, fichzip);
         FileOutputStream flux = new FileOutputStream(fichier);
         ZipOutputStream fichierZIP = new ZipOutputStream(flux);
      
      //Méthode de compression DEFLATED
         fichierZIP.setMethod(ZipOutputStream.DEFLATED);
      
      //Niveau de compression
      //9 = BEST_COMPRESSION
         fichierZIP.setLevel(Deflater.BEST_COMPRESSION);
      
         boolean fin = false;
         int n = 1;
         BufferedReader entree = new BufferedReader(new 

InputStreamReader(System.in));
         while(!fin){
         
            System.out.println("Nom du fichier numero "+n+" a archiver.\nNe pas 

oublier l'extension. \nTapez \"x2802x\" pour sortir");
         	System.out.println ();
            n++;
         
            String Fich = entree.readLine();
            if(Fich.equals("x2802x")){ fin = true; }
         
            ZipEntry entreeZIP = new ZipEntry(Fich);
            fichierZIP.putNextEntry(entreeZIP);
         
            //Envoi du contenu dans l'archive à travers un flux
            BufferedOutputStream flushOut = new BufferedOutputStream(fichierZIP);
            DataOutputStream fileData = new DataOutputStream(flushOut);
            if(Fich.equals("x2802x")){fileData.writeBytes("c'est la fin!");}
            else{
            	System.out.println("Entrez les donnees a garder ici.");
            	System.out.println("Pour finir taper x2802x sur une ligne 

vide.");
            	System.out.println();
            	while(!(Fich=entree.readLine()).equals("x2802x")){
               	fileData.writeBytes(Fich);
            		fileData.flush();
            	}
            	Fich = "";
            }
            
            //Fermeture de l'archive jusqu'à la prochaîne entrée
            fichierZIP.closeEntry();
            System.out.println ("Taille : " + entreeZIP.getCompressedSize());
         	System.out.println ();
         
            if(Fich.equals("x2802x")){ fileData.close(); }
         }
      //Fermeture de l'archive et du flux
         fichierZIP.close();
         flux.flush();
         flux.close();
      }
   }

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.