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

4/5 (9 avis)

Snippet vu 9 501 fois - Téléchargée 29 fois

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

Ajouter un commentaire Commentaires
abdouinfomiage Messages postés 80 Date d'inscription mardi 26 juillet 2005 Statut Membre Dernière intervention 3 février 2008
31 juil. 2006 à 17:24
ou est ce que j pourais trouver le diver mysql merci
afaf2006 Messages postés 37 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 25 juin 2010
14 mars 2006 à 21:29
faudra mieux ne pas utiliser des actions en java car il fait des bougues à votre programme de ma part pas d'accent
afaf2006 Messages postés 37 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 25 juin 2010
14 mars 2006 à 20:49
tu va faire ecrasement des fichiers
afaf2006 Messages postés 37 Date d'inscription mardi 14 mars 2006 Statut Membre Dernière intervention 25 juin 2010
14 mars 2006 à 20:49
tu va faire ecrasement des fichiers
mikerob Messages postés 4 Date d'inscription mercredi 29 septembre 2004 Statut Membre Dernière intervention 16 septembre 2009
23 août 2005 à 17:53
C'est plutôt bien comme bout de code. Mais maintenant la question qui tue : Et si je veux pouvoir compresser des fichiers qui ont des noms avec des accents ? :D
Bon ça les compressent mais si je regarde avec winzip p.ex, les noms des fichiers ont des accents bizarres...

Réponse lorsque des gens s'interesseront au problème ;)

Mike
Afficher les 9 commentaires

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.