begin process at 2012 02 04 18:10:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > ZIP, POUR ZIPER ET DÉZIPER UN FICHIER AISÉMENT EN JAVA

ZIP, POUR ZIPER ET DÉZIPER UN FICHIER AISÉMENT EN JAVA


 Information sur la source

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :zip, ziper, déziper, fichier, compresser Niveau :Débutant Date de création :06/09/2002 Date de mise à jour :06/09/2002 07:51:49 Vu :28 205

Auteur : JHelp

Ecrire un message privé
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Permet de ziper et déziper des fichers. Le code est en Java.
Son intéret : faciliter le zipage et le dézipage en Java.

Source

  • //Titre : Zip
  • //Version : 1.0
  • //Copyright : Copyright (c) 2002
  • //Auteur : JHelp
  • //Société : GG
  • //Description : Ziper et déziper
  • package zip;
  • import java.util.zip.*;
  • import java.util.*;
  • import java.io.File;
  • import java.io.FileInputStream;
  • import java.io.FileOutputStream;
  • /**
  • * Classe gérant les fichiers ZIP
  • */
  • public class ZIP
  • {
  • //Nom du fichier
  • private String fichier;
  • //Liste des fichiers contenus dans le zip
  • private Vector liste=new Vector();
  • //Séparateur de fichier, selon le sytéme d'exploitaion utilisé. Ainsi le code est valide partou
  • private static final char separ=File.separatorChar;
  • /**
  • * Le rang où se trouve le nom
  • */
  • public static final int placeNom=0;
  • /**
  • * Le rang où se trouve la taille
  • */
  • public static final int placeTaille=1;
  • /**
  • * Le rang où se trouve la taille de compression
  • */
  • public static final int placeCompression=2;
  • /**
  • * Le rang où se trouve la date
  • */
  • public static final int placeDate=3;
  • /**
  • * Le rang où se trouve le commentaire
  • */
  • public static final int placeCommentaire=4;
  • /**
  • * Crée le zip
  • * @param fichier Le nom du fichier zip, avec son chemin complet
  • */
  • public ZIP(String fichier) throws Exception
  • {
  • this.fichier=fichier;
  • File f=new File(fichier);
  • //Si le fichier existe, on récupére le nom et les attributs des fichiers compréssés dans le zip
  • if(f.exists())
  • {
  • //C'est un fichier zip
  • ZipFile fic=new ZipFile(fichier);
  • //Récupération des fichiers
  • Enumeration enum=fic.entries();
  • while(enum.hasMoreElements())
  • liste.addElement(enum.nextElement());
  • }
  • }
  • /**
  • * Change le nom du fichier zip, avec un chemin complet
  • */
  • public void setNom(String nom)
  • {
  • fichier=nom;
  • }
  • /**
  • * Donne un vecteur titre. Peut servir pour l'ent^te d'un JTable
  • */
  • public static Vector getTitre()
  • {
  • Vector titre=new Vector();
  • titre.addElement("Nom");
  • titre.addElement("Taille");
  • titre.addElement("Compression");
  • titre.addElement("Date");
  • titre.addElement("Commentaire");
  • return titre;
  • }
  • /**
  • * Vecteur de vecteur contenant les donnéees <BR>
  • * Pour récupérer la ligne l, colonnne c, faire : <BR>
  • * Vector donnes=zip.contenu(); <BR>
  • * ... <BR>
  • * Vector lig=(Vector)donnees.get(l); <BR>
  • * String valeur=(String)lig.get(c);
  • */
  • public Vector contenu()
  • {
  • int nb=liste.size();
  • Vector donnees=new Vector();
  • for(int i=0;i<nb;i++)
  • {
  • Vector ligne=new Vector();
  • ZipEntry entre=(ZipEntry)liste.elementAt(i);
  • ligne.addElement(entre.getName());
  • ligne.addElement(""+entre.getSize());
  • long j=entre.getCompressedSize();
  • if(j>=0)
  • ligne.addElement(""+j);
  • else
  • ligne.addElement("");
  • Date date=new Date(entre.getTime());
  • Calendar calendrier=Calendar.getInstance();
  • calendrier.setTime(date);
  • ligne.addElement(
  • calendrier.get(Calendar.HOUR_OF_DAY)+"h"+
  • calendrier.get(Calendar.MINUTE)+"m"+
  • calendrier.get(Calendar.SECOND)+"s le "+
  • calendrier.get(Calendar.DAY_OF_MONTH)+"/"+
  • calendrier.get(Calendar.MONTH)+"/"+
  • calendrier.get(Calendar.YEAR));
  • ligne.addElement(entre.getComment());
  • donnees.addElement(ligne);
  • }
  • return donnees;
  • }
  • /**
  • * Donne une chaine représentant la caractéristique du fichier <BR>
  • * @param place Rang de la caratéristique. <BR>
  • * @param numero Numéro du fichier contenu dans le zip <BR>
  • * Exemple : <BR>
  • * Pour avoir la taille de compression du fichier numéro 5 faire : <BR>
  • * String taille=zip.get(ZIP.placeCompression,5);
  • */
  • public String get(int place,int numero)
  • {
  • //Récupération des caractéristiques du fichier
  • ZipEntry entre=(ZipEntry)liste.elementAt(numero);
  • //Selon la caractéristique demandée, retourner la valeur corespondante
  • switch(place)
  • {
  • //Le commentaire
  • case placeCommentaire :
  • return entre.getComment();
  • //La taille de compression
  • case placeCompression :
  • long j=entre.getCompressedSize();
  • if(j>=0)
  • return ""+j;
  • return "";
  • //La date du fichier
  • case placeDate :
  • //Transformation de la date exprimée en milliseconde, en date plus courante
  • Date date=new Date(entre.getTime());
  • //Mise en place d'un calendrier à partir de la date
  • Calendar calendrier=Calendar.getInstance();
  • calendrier.setTime(date);
  • //Renvoie des données
  • return calendrier.get(Calendar.HOUR_OF_DAY)+"h"+
  • calendrier.get(Calendar.MINUTE)+"m"+
  • calendrier.get(Calendar.SECOND)+"s le "+
  • calendrier.get(Calendar.DAY_OF_MONTH)+"/"+
  • calendrier.get(Calendar.MONTH)+"/"+
  • calendrier.get(Calendar.YEAR);
  • //Le nom du fichier
  • case placeNom :
  • return entre.getName();
  • //La taille réelle du fichier
  • case placeTaille :
  • return ""+entre.getSize();
  • }
  • //Renvoie la chaîne vide si la caractéristique n'existe pas
  • return "";
  • }
  • /**
  • * Ajoute un fichier au fichier zip
  • */
  • public void ajouteFichier(File fichier)
  • {
  • ajouteFichier(fichier,null);
  • }
  • /**
  • * Ajoute un fichier au fichier zip avec un commentaire
  • */
  • public void ajouteFichier(File fichier,String commentaire)
  • {
  • //Transforme le fichier en entrée du zip
  • ZipEntry entre=new ZipEntry(fichier.getAbsolutePath().substring(3).replace(separ,'/'));
  • entre.setSize(fichier.length());
  • entre.setTime(fichier.lastModified());
  • if(commentaire!=null)
  • entre.setComment(commentaire);
  • //Ajoute l'éntrée
  • liste.addElement(entre);
  • }
  • /**
  • * Retire le fichier du zip
  • */
  • public void retire(File fichier)
  • {
  • //Cacul le nom de l'entrée, en majuscule, corespondante au fichier
  • String s=fichier.getAbsolutePath().substring(3).replace(separ,'/').toUpperCase();
  • //Chercher le rang de l'éntrée corespondante
  • int rang=-1;
  • int nb=liste.size();
  • for(int i=0;(i<nb)&&(rang<0);i++)
  • {
  • ZipEntry entre=(ZipEntry)liste.elementAt(i);
  • if(entre.getName().toUpperCase().equals(s))
  • rang=i;
  • }
  • //Si l'éntrée existe, la retirée
  • if(rang>=0)
  • liste.removeElementAt(rang);
  • }
  • /**
  • * @return Le nom du fichier
  • */
  • public int getNombreFichier()
  • {
  • return liste.size();
  • }
  • /**
  • * Retire l'élélement numéro numero
  • */
  • public void retire(int numero)
  • {
  • liste.removeElementAt(numero);
  • }
  • /**
  • * Zip les fichiers dans le nom du zip correspondant. Met à jour les changements.
  • */
  • public void ziper() throws Exception
  • {
  • //Si le fichier n'existe pas, le créer
  • File f=new File(fichier);
  • if(!f.exists())
  • f.createNewFile();
  • //Ouverture du fichier zip en écriture
  • ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(fichier));
  • //Pour chaque entrée du zip
  • int nb=liste.size();
  • for(int i=0;i<nb;i++)
  • {
  • //Récupérer l'éntrée courante
  • ZipEntry entre=(ZipEntry)liste.elementAt(i);
  • //Récupérer le nom de l'entrée
  • String nom=entre.getName();
  • //Ajouter l'entrée au fichier physique zip
  • zos.putNextEntry(entre);
  • //Ouvrir l'entrée en lecture
  • FileInputStream fis=new FileInputStream("C:\\"+nom.replace('/',separ));
  • //Ziper l'entrée dans le fichier zip
  • byte[] tab=new byte[4096];
  • int lu=-1;
  • do
  • {
  • lu=fis.read(tab);
  • if(lu>0)
  • zos.write(tab,0,lu);
  • }while(lu>0);
  • //Fermer l'entrée
  • fis.close();
  • }
  • //Force à finir le zipage, si jamais il reste des bits non traités
  • zos.flush();
  • //Ferme le fichier zip
  • zos.close();
  • }
  • /**
  • * Dézipe le fichier dans le dossier en paramétre. Respect du nom des dossiers et sous-dossiers
  • */
  • public void deziper(File dossier) throws Exception
  • {
  • //Ouverture du fichier zip en lecture
  • ZipInputStream zis=new ZipInputStream(new FileInputStream(fichier));
  • //Récupére les entrées éffectivement zipées dans le zip
  • ZipEntry ze=zis.getNextEntry();
  • //Tant qu'il y a des entrées
  • while(ze!=null)
  • {
  • //Crée le dossier contenant le fichier une fois déziper, si il n'existe pas
  • File f=new File(dossier.getAbsolutePath()+separ+ze.toString().replace('/',separ));
  • f.getParentFile().mkdirs();
  • //Ouvre l'entrée le fichier à déziper en écriture, le crée s'il n'existe pas
  • FileOutputStream fos=new FileOutputStream(f);
  • //Dézipe le fichier
  • int lu=-1;
  • byte[] tampon=new byte[4096];
  • do
  • {
  • lu=zis.read(tampon);
  • if(lu>0)
  • fos.write(tampon,0,lu);
  • } while(lu>0);
  • //Finir proprement
  • fos.flush();
  • //Fermer le fichier à déziper
  • fos.close();
  • //Passer au suivant
  • ze=zis.getNextEntry();
  • }
  • //Fermer le fichier zip
  • zis.close();
  • }
  • /**
  • * Modifie le commentaire du fichier numéro numero
  • */
  • public void setCommentaire(int numero,String commentaire)
  • {
  • ZipEntry entre=(ZipEntry)liste.elementAt(numero);
  • entre.setComment(commentaire);
  • }
  • }
//Titre :        Zip
//Version :      1.0
//Copyright :    Copyright (c) 2002
//Auteur :       JHelp
//Société :      GG
//Description :  Ziper et déziper
package zip;

import java.util.zip.*;
import java.util.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

/**
 *   Classe gérant les fichiers ZIP
 */
public class ZIP
{
     //Nom du fichier
     private String fichier;
     //Liste des fichiers contenus dans le zip
     private Vector liste=new Vector();
     //Séparateur de fichier, selon le sytéme d'exploitaion utilisé. Ainsi le code est valide partou
     private static final char separ=File.separatorChar;
     /**
      *   Le rang où se trouve le nom
      */
     public static final int placeNom=0;
     /**
      *   Le rang où se trouve la taille
      */
     public static final int placeTaille=1;
     /**
      *   Le rang où se trouve la taille de compression
      */
     public static final int placeCompression=2;
     /**
      *   Le rang où se trouve la date
      */
     public static final int placeDate=3;
     /**
      *   Le rang où se trouve le commentaire
      */
     public static final int placeCommentaire=4;
     /**
      *   Crée le zip
      *   @param fichier Le nom du fichier zip, avec son chemin complet
      */
     public ZIP(String fichier) throws Exception
     {
          this.fichier=fichier;
          File f=new File(fichier);
          //Si le fichier existe, on récupére le nom et les attributs des fichiers compréssés dans le zip
          if(f.exists())
          {
               //C'est un fichier zip
               ZipFile fic=new ZipFile(fichier);
               //Récupération des fichiers
               Enumeration enum=fic.entries();
               while(enum.hasMoreElements())
                    liste.addElement(enum.nextElement());
          }
     }
     /**
      *   Change le nom du fichier zip, avec un chemin complet
      */
     public void setNom(String nom)
     {
          fichier=nom;
     }
     /**
      *   Donne un vecteur titre. Peut servir pour l'ent^te d'un JTable
      */
     public static Vector getTitre()
     {
          Vector titre=new Vector();
          titre.addElement("Nom");
          titre.addElement("Taille");
          titre.addElement("Compression");
          titre.addElement("Date");
          titre.addElement("Commentaire");
          return titre;
     }
     /**
      *   Vecteur de vecteur contenant les donnéees <BR>
      *   Pour récupérer la ligne l, colonnne c, faire : <BR>
      *   Vector donnes=zip.contenu();  <BR>
      *   ... <BR>
      *   Vector lig=(Vector)donnees.get(l); <BR>
      *   String valeur=(String)lig.get(c);
      */
     public Vector contenu()
     {
          int nb=liste.size();
          Vector donnees=new Vector();
          for(int i=0;i<nb;i++)
          {
               Vector ligne=new Vector();
               ZipEntry entre=(ZipEntry)liste.elementAt(i);
               ligne.addElement(entre.getName());
               ligne.addElement(""+entre.getSize());
               long j=entre.getCompressedSize();
               if(j>=0)
                    ligne.addElement(""+j);
               else
                    ligne.addElement("");
               Date date=new Date(entre.getTime());
               Calendar calendrier=Calendar.getInstance();
               calendrier.setTime(date);
               ligne.addElement(
                    calendrier.get(Calendar.HOUR_OF_DAY)+"h"+
                    calendrier.get(Calendar.MINUTE)+"m"+
                    calendrier.get(Calendar.SECOND)+"s le "+
                    calendrier.get(Calendar.DAY_OF_MONTH)+"/"+
                    calendrier.get(Calendar.MONTH)+"/"+
                    calendrier.get(Calendar.YEAR));
               ligne.addElement(entre.getComment());
               donnees.addElement(ligne);
          }
          return donnees;
     }
     /**
      *   Donne une chaine représentant la caractéristique du fichier <BR>
      *   @param place Rang de la caratéristique. <BR>
      *   @param numero Numéro du fichier contenu dans le zip <BR>
      *   Exemple : <BR>
      *   Pour avoir la taille de compression du fichier numéro 5 faire : <BR>
      *   String taille=zip.get(ZIP.placeCompression,5);
      */
     public String get(int place,int numero)
     {
          //Récupération des caractéristiques du fichier
          ZipEntry entre=(ZipEntry)liste.elementAt(numero);
          //Selon la caractéristique demandée, retourner la valeur corespondante
          switch(place)
          {
               //Le commentaire
               case placeCommentaire :
                    return entre.getComment();
               //La taille de compression
               case placeCompression :
                    long j=entre.getCompressedSize();
                    if(j>=0)
                         return ""+j;
                    return "";
               //La date du fichier
               case placeDate :
                    //Transformation de la date exprimée en milliseconde, en date plus courante
                    Date date=new Date(entre.getTime());
                    //Mise en place d'un calendrier à partir de la date
                    Calendar calendrier=Calendar.getInstance();
                    calendrier.setTime(date);
                    //Renvoie des données
                    return calendrier.get(Calendar.HOUR_OF_DAY)+"h"+
                         calendrier.get(Calendar.MINUTE)+"m"+
                         calendrier.get(Calendar.SECOND)+"s le "+
                         calendrier.get(Calendar.DAY_OF_MONTH)+"/"+
                         calendrier.get(Calendar.MONTH)+"/"+
                         calendrier.get(Calendar.YEAR);
               //Le nom du fichier
               case placeNom :
                    return entre.getName();
               //La taille réelle du fichier
               case placeTaille :
                    return ""+entre.getSize();
          }
          //Renvoie la chaîne vide si la caractéristique n'existe pas
          return "";
     }
     /**
      *   Ajoute un fichier au fichier zip
      */
     public void ajouteFichier(File fichier)
     {
          ajouteFichier(fichier,null);
     }
     /**
      *   Ajoute un fichier au fichier zip avec un commentaire
      */
     public void ajouteFichier(File fichier,String commentaire)
     {
          //Transforme le fichier en entrée du zip
          ZipEntry entre=new ZipEntry(fichier.getAbsolutePath().substring(3).replace(separ,'/'));
          entre.setSize(fichier.length());
          entre.setTime(fichier.lastModified());
          if(commentaire!=null)
               entre.setComment(commentaire);
          //Ajoute l'éntrée 
          liste.addElement(entre);
     }
     /**
      *   Retire le fichier du zip
      */
     public void retire(File fichier)
     {
          //Cacul le nom de l'entrée, en majuscule, corespondante au fichier
          String s=fichier.getAbsolutePath().substring(3).replace(separ,'/').toUpperCase();
          //Chercher le rang de l'éntrée corespondante
          int rang=-1;
          int nb=liste.size();
          for(int i=0;(i<nb)&&(rang<0);i++)
          {
               ZipEntry entre=(ZipEntry)liste.elementAt(i);
               if(entre.getName().toUpperCase().equals(s))
                    rang=i;
          }
          //Si l'éntrée existe, la retirée
          if(rang>=0)
               liste.removeElementAt(rang);
     }
     /**
      *   @return Le nom du fichier
      */
     public int getNombreFichier()
     {
          return liste.size();
     }
     /**
      *   Retire l'élélement numéro numero
      */
     public void retire(int numero)
     {
          liste.removeElementAt(numero);
     }
     /**
      *   Zip les fichiers dans le nom du zip correspondant. Met à jour les changements.
      */
     public void ziper() throws Exception
     {
          //Si le fichier n'existe pas, le créer
          File f=new File(fichier);
          if(!f.exists())
               f.createNewFile();
          //Ouverture du fichier zip en écriture
          ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(fichier));
          //Pour chaque entrée du zip
          int nb=liste.size();
          for(int i=0;i<nb;i++)
          {
               //Récupérer l'éntrée courante
               ZipEntry entre=(ZipEntry)liste.elementAt(i);
               //Récupérer le nom de l'entrée
               String nom=entre.getName();
               //Ajouter l'entrée au fichier physique zip
               zos.putNextEntry(entre);
               //Ouvrir l'entrée en lecture
               FileInputStream fis=new FileInputStream("C:\\"+nom.replace('/',separ));
               //Ziper l'entrée dans le fichier zip
               byte[] tab=new byte[4096];
               int lu=-1;
               do
               {
                    lu=fis.read(tab);
                    if(lu>0)
                         zos.write(tab,0,lu);
               }while(lu>0);
               //Fermer l'entrée
               fis.close();
          }
          //Force à finir le zipage, si jamais il reste des bits non traités
          zos.flush();
          //Ferme le fichier zip
          zos.close();
     }
     /**
      *   Dézipe le fichier dans le dossier en paramétre. Respect du nom des dossiers et sous-dossiers
      */
     public void deziper(File dossier) throws Exception
     {
          //Ouverture du fichier zip en lecture
          ZipInputStream zis=new ZipInputStream(new FileInputStream(fichier));
          //Récupére les entrées éffectivement zipées dans le zip
          ZipEntry ze=zis.getNextEntry();
          //Tant qu'il y a des entrées
          while(ze!=null)
          {
               //Crée le dossier contenant le fichier une fois  déziper, si il n'existe pas
               File f=new File(dossier.getAbsolutePath()+separ+ze.toString().replace('/',separ));
               f.getParentFile().mkdirs();
               //Ouvre l'entrée le fichier à déziper en écriture, le crée s'il n'existe pas
               FileOutputStream fos=new FileOutputStream(f);
               //Dézipe le fichier
               int lu=-1;
               byte[] tampon=new byte[4096];
               do
               {
                    lu=zis.read(tampon);
                    if(lu>0)
                         fos.write(tampon,0,lu);
               } while(lu>0);
               //Finir proprement
               fos.flush();
               //Fermer le fichier à déziper
               fos.close();
               //Passer au suivant
               ze=zis.getNextEntry();
          }
          //Fermer le fichier zip
          zis.close();
     }
     /**
      *   Modifie le commentaire du fichier numéro numero
      */
     public void setCommentaire(int numero,String commentaire)
     {
          ZipEntry entre=(ZipEntry)liste.elementAt(numero);
          entre.setComment(commentaire);
     }
}

 Conclusion

Si vous avez des questions concernant ce code, des commentaires, des critiques, des méthodes qui vous manquent, n'esitez pas à me contacter.
A bientôt.
JHelp


 Sources du même auteur

Source avec Zip POUR LIRE DU SON
ECRIRE UN NOMBRE ENTIER EN TOUTE LETTRE
Source avec Zip Source avec une capture PACKAGE ECRAN. UN PACKAGE POUR LA GESTION 2D
VERTICALLAYOUT, ENFIN UN LAYOUT POUR PLACER DES ÉLÉMENTS EN ...
Source avec une capture ARBRE BINAIRE ORDONNÉE, UNE FAÇON DE LES STOCKÉE ET DE LES R...

 Sources de la même categorie

Source avec Zip Source avec une capture COMPLÉTION AUTOMATIQUE par Julien39
Source avec Zip Source avec une capture [JOGL] ANIMATION 3D DANS UN BOUTON par loloof64
Source avec Zip CALCULATRICE BIEN FAITE (VERSION SIMPLIFIÉE) par Julien39
Source avec une capture YNOT, UN NOUVEAU LANGAGE DE SCRIPT ÉCRIT EN JAVA. par apmneo7114
Source avec Zip KIT DE FICHIERS DE PROGRAMMATION par edouard333

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture J(DE)COMPRESSION V4 BETA par edouard333
Source avec Zip ZIPPER / DÉZIPPER UN FICHIER, UN DOSSIER par tarzent
Source avec Zip COMPRESSION-DÉCOMPRESSION DE FICHIER par Moyan
Source avec Zip ZIPEUR DE FICHIER 2 par grand_jeanluc
ZIPEUR DE FICHIER par harryharry

Commentaires et avis

Commentaire de JHelp le 06/09/2002 18:57:05

Fait attention aux fautes d'orthographes !

Commentaire de scorpion322 le 20/12/2002 14:53:52

MERCI POUR TES SOURCES ;-)

Commentaire de daveCrocket le 19/11/2003 17:41:45

je suis débutant et je n'arrive pas à faire fonctionner la classe :o(

Il ne crée pas le zip mais je n'ai pas de message d'erreur.

Voici mon code :

      ZIP z = new ZIP("c: t.zip");

      File f=new File("c: t.txt");
      z.ajouteFichier(f);
      
      z.ziper();

      File R=new File("C: est");
      z.deziper(R);

Commentaire de gui_llaume1 le 13/01/2004 15:44:42

Salut je voudrais savoir qu'est ce que c'est la variable separ dans le deziper

Commentaire de vinvay le 02/02/2004 11:03:31

Comment fais-tu pour dézipper si ton fichier zip posséde un password ??

Commentaire de JHelp le 02/02/2004 11:28:56

gui_lumme1 : Regarde le code au début, la constante 'separ' est définit. Elle représente le séparateur de fichier selon ton OS. Sous Windows c'est \, sous unix et Linux c'est /,...

vinvay : Il est malheureusement impossible de le faire directement, car les zippeur/dézippeur qui fournissent cette possibilité ne s'y prennent pas tous de la même manière. Résultat : impossible de dézipper un fichier protégé par une clef à l'aide d'un autre zippeur/dézippeur que celui d'origine. La solution :
1) Trouver la description de la façon dont le cryptage est fait pour chaque logiciel possible
2) Coder un codeur/décodeur pour chaque source possible
3) Demandé à l'utilisateur la source d'où provient le fichier, ou vers quel logiciel exporter.

Commentaire de JHelp le 02/02/2004 11:29:57

gui_lumme1 : Regarde le code au début, la constante 'separ' est définit. Elle représente le séparateur de fichier selon ton OS. Sous Windows c'est \, sous unix et Linux c'est /,...

vinvay : Il est malheureusement impossible de le faire directement, car les zippeur/dézippeur qui fournissent cette possibilité ne s'y prennent pas tous de la même manière. Résultat : impossible de dézipper un fichier protégé par une clef à l'aide d'un autre zippeur/dézippeur que celui d'origine. La solution :
1) Trouver la description de la façon dont le cryptage est fait pour chaque logiciel possible
2) Coder un codeur/décodeur pour chaque source possible
3) Demandé à l'utilisateur la source d'où provient le fichier, ou vers quel logiciel exporter.

Commentaire de vinvay le 13/04/2004 13:31:47

Donc ta variable 'separ' sert à ce que ton code fonctionne sur différent OS !! Mais 'c:\\' dans 'ziper()' ne fonctionne pas sous Linux par exemple !! Donc ton code n'est pas utilisable sur une machine autre que Windows !!

Tu as déjà essayé de faire un zip sur une machine et par exemple d'y ajouté un fichier sur une autre machine ?? Ca marche pas !!

Il faudrait ajouter la possibilité de zipper un repertoire sans avoir à lui passer tous les fichiers de celui-ci !!

Sinon pour le reste, j'ai pas testé !!

Commentaire de Asrull le 19/05/2004 09:02:02

t qd même sévère vinvay, si on pensait à toutes les solutions du premier coup on aurait pas grand interet à exposer ses source pour les commenter. g pas core testé cette classe mais dans tous les cas elle a moins l'avantage de me montrer comment on fait du zip en java. la prise en compte des different os, c'est limite de la fioriture que tout le monde sait faire ...

Commentaire de dicha le 19/08/2004 17:52:42

Super ta source, elle va me faire gagner bcp de temps.
Merci.
Juste une petit question

As tu fini de dévolopper la méthode retire()
car pour l'instant tu ne ressorts que le numéro du fichier à suprimer, mais je n'ai rien vu qui permet de le faire réellement. ou pas bien compris.
Suis nouveau en java... :o(

merci pour ta réponse

Commentaire de dicha le 20/08/2004 09:39:50

J'ai finalement compris que la facon que tu utilises pour retirer un fichier du zip, c'est de recréer le zip en se servant de la liste qu'il contient moins celui que l'on ne veut plus, cette liste faisant référence au fichier dans le répertoire d'origine.
Le problème est le suivant, si je crée un zip, c'est pour me permettre de gagner de la place sur le disque et donc supprimer les fichiers d'origines quand le zip est créé.
Si je veux retirer un fichier du zip, ça ne marche pas avec ta méthode, car les fichiers d'origines n'existe plus voir même que l'archive n'est plus sur le même serveur.

Aurais tu une solution plus rapide que celle de devoir dézipper le fichier et de le rezipper sans le fihier indésirable.
d'avance merci...

Commentaire de leyann le 21/09/2004 16:02:18

Et pour les fichiers dont les noms comportent des lettres accentués, quelqu'un a déjà trouvé une solution ?

Commentaire de bananaloozeur le 07/03/2005 11:06:03

bonjour

tres bien ce code, j'ai juste une petite question, je voudrais mettre un mot de passe sur mes archives sauriez vous comment faire??

merci

Commentaire de Syruis le 24/05/2005 13:18:57

Salut,
A mon avis pour ceux qui veulent retirer un fichier d'un zip deja créer la meilleur solution est de
dezipper rezipper... sinon pour les bourrin tu l'ouvre comme un fichier txt et tu supprimme les deux ligne ou le nom du fichier est présent...

Sinon merci la source!
Voila!

Commentaire de Arnaud16022 le 06/07/2005 21:24:49

heu y un truc qu je cale pas ici...c'est toi ou la JVM qui zippe/dézippe? j'ai bien l'impression que c'est la JVM mais bon
sinon qqun a une URL qui explique comment DÉZIPPER un fichier (zipper ne m'intéresse pas?) je code en C++ uniquemement, pas en java
merci
++
ad

Commentaire de allerajl le 21/11/2005 10:25:42

Bonjour,

Qui peut m'aider pour compléter la methode deziper, elle ne fait pas la différence entre créer un fichier ou un répertoire.
Toutes aides ou remarques sont les bienvenues.

cordialement.

Commentaire de sepho973 le 02/03/2006 13:24:10

Salut, j'aimerai savoir si quelqu'un sait comment ajouter un répertoire (et non un fichier) à un zip.
Merci d'avance!

Commentaire de JHelp le 03/03/2006 07:31:09

Pour les dossier, en fait il faut jouer sur les noms de tes entrées.
Je m'explique, par exmple tu veux mettre le dossier truc contenant les fichiers machin et bidules, et bien pour le nom de tes entrées tu choisiras truc/machin et truc/bidule, c'est la seule solution pour faire cela.
JHelp

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Zip, servlet, et fichier Excel [ par as634 ] J'ai créé un fichier excel grace à jExcel. Je voudrais insérer ce fichier dans une archive zip qui sera renvoyée par ma servlet.Voici mon code pour la Compatibilite de Zip? [ par larecrue ] Bonjour, J&#8217;ai quelques problemes: Le plus facile: comment fait on pour n&#8217;avoir que la petite croix pour fermer dans sa Jframe. Un peu pl How to "Splitter un fichier zip généré en java ? " [ par homerosaur ] Salut à tous,je recherche un moyen de splitter un fichier zip que je génère en java.Mille merci d'avance à qui pourrait m'aidertiti download d'un fichier zip sur un site internet [ par yann.jaunin ] Hello,j'essaye de télécharger un fichier zip qui se trouve sur un site internet. Je suis débutant donc soyez indulgent :-)voici l'erreur que j'aie :un PROBLEME DE ZIP [ par gui_llaume1 ] Bonjour &#224; tous,J'explique mon cas.Je cr&#233;e dans une appli swing &#224; un moment un fichier zip &#224; partir d'un tableau de String contenan Lire fichier .zip [ par luckybenji86 ] Bonjour,J'aimerai savoir si quelqu'un à déja essayé de lire des fichier dans un .zip avec mot de passe.En utilisant la libririe java.util.zip mais cel Comment utiliser un fichier zip télécharger [ par Naidoo ] Bonsoir à tous,j'ai besoin d'aide car j'ai de la peine à cerner un certain problème...Pouvez vous m'expliquer, points par points, comment utiliser un [A SUPPRIMER]ouvrir un fichier en format zip par une application java. [ par radjaco ] bonjour, j'ai un fichier zip qui contient plusieurs fichiers .txt,je veudrai savoir comment faire pour afficher le contenu d'un de ces fichiers textes decompresser un fichier zip [ par kam81 ] Bonjour,Je cherche de l'aide pour decompresser un fichier zip se trouvant dans un repertoire rep1et envoyer le resultat dans un repertoire rep2.merci. compression audio [ par simson ] Bonjour, Existe il une classe pour compresser et décompresser un fichier sonore ( comme le mp3 par exemple) ou faut il faire l'algorithme soit


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,139 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales