Le 1 Feb 2002 Cyriaque Dupoirieux a �crit :

> Bonjour,
> 
>     Auriez-vous des exemples de manipulations de fichiers zip en java
>     ?
> 

Voici un extrait de ma prose sur le sujet. Il s'agit d'une op�ration 
de d�zippage. Je me suis astreint � mettre des commentaires, pour 
essayer de comprendre ce que j'avais fait. C'est du jdk1.1.8. Pour 
mes petites affaires, il s'agissait de mettre en place la 
configuration de base d'une application, configuration pr�sente zipp� 
dans le .jar de cette appli.


  private void d�zipeConfigBase() throws IOException
  {
    InputStream is;
    ZipInputStream zip;

    is = null;
    zip = null;
    try
      {
          ZipEntry ze;
          File base;

        // base est le repertoire destination
          base = maBase.r�pertoire();

        // la ressource configbase.zip est le zip origine.
        is = getClass().getResourceAsStream("configbase.zip");

        if (is != null)
          {
            zip = new ZipInputStream(is);
            ze = zip.getNextEntry();

        // tant que on n'a pas fait tout les entrees du zip...
            while (ze != null)
              {
                String filename;
                File destFile;

                        // on prend le nom de l'entree, et on remplace les etapes
                        // du chemin par / ou \ ou ...
                filename = ze.getName();
                filename = filename.replace('/', File.separatorChar);
                destFile = new File(base, filename);

                if (destFile.exists())
                  System.out.println("install : conserve "+destFile);
                else
                  {
                    System.out.println("install : ecriture 
"+destFile);

                                // si l'entree est un repertoire, on cree le repertoire
                    if (ze.isDirectory())
                      destFile.mkdirs();
                    else
                      {
                                        // sinon, on cree le fichier.
                        String parent;
                        OutputStream out;
                        int count;
                        byte a_b[];

                                        // on verifie si le repertoire parent du 
fichier existe, 
                                        // sinon on le cree
                        parent = destFile.getParent();
                        if (parent != null)
                          {
                            File parentFile;

                            parentFile = new File(parent);
                            if (!parentFile.exists())
                              parentFile.mkdirs();
                          }

                                        // ouverture du flux de destination
                        out = new FileOutputStream(destFile);

                                        // et on fait le transfert par pas de 512 
octets.
                        a_b = new byte[512];
                        count = zip.read(a_b);
                        while (count != -1)
                            {
                                out.write(a_b, 0, count);
                                count = zip.read(a_b);
                            }
                        out.close();
                      }
                  }

                        // en avant pour le prochain fichier compresse !
                ze = zip.getNextEntry();
              }
          }
        else
          System.out.println("pas de zip des repertoires ?");
      }
    finally
      {
        if (is != null) is.close();
        if (zip != null) zip.close();
      }
  }

Et voil� !

<pub>
C'est un extrait de notre produit "diaam auteur", dont vous pouvez 
t�l�charger le exe d'install � 
http://www.diaam.com/telechargement.html et qui contient les sources 
:-)
</pub>


Sinon, il y a une tache Ant pour ziper/deziper. Peut-�tre pourrais-tu 
la r�utiliser ?


--
Sur le Web, tout de suite.
Herve AGNOUX - diaam informatique
http://www.diaam-informatique.com

Répondre à