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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 128 fois - Téléchargée 27 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

Messages postés
80
Date d'inscription
mardi 26 juillet 2005
Statut
Membre
Dernière intervention
3 février 2008

ou est ce que j pourais trouver le diver mysql merci
Messages postés
37
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
25 juin 2010

faudra mieux ne pas utiliser des actions en java car il fait des bougues à votre programme de ma part pas d'accent
Messages postés
37
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
25 juin 2010

tu va faire ecrasement des fichiers
Messages postés
37
Date d'inscription
mardi 14 mars 2006
Statut
Membre
Dernière intervention
25 juin 2010

tu va faire ecrasement des fichiers
Messages postés
4
Date d'inscription
mercredi 29 septembre 2004
Statut
Membre
Dernière intervention
16 septembre 2009

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.