précédent | suivant | table des matières

ZipInputStream

Cette classe permet de lire des fichiers au format ZIP.

1 Constructeur :

ZipInputStream (InputStream i)
Crée un ZIPInputStream à partir d'un InputStream.

2 Méthodes :

ZipEntry getNextZipEntry()
Retourne une instance de ZipEntry décrivant l'entrée (fichier) suivante du zip, si elle existe, et null sinon. Le ZipInputStream est positionné au début de l'entrée.
void closeEntry()
>Ferme l'entée courante.

Une séquence d'instructions tavaillant sur un fichier ZIP aura en général la structure suivante :

try{
   ZipInputStream z = new ZipInputStream(new FileInputStream("X.zip"));
   while(true){
      ZipEntry ze = z.getNextEntry();
      if(ze==null) break;
      // travail sur l'entrée ze : par exemple son affichage
      System.out.println("\n-------------------------"+ze.getName());
      for( int c= z.read(); c!=-1; c = z.read())
      System.out.print((char)c);
      z.closeEntry();
   }
   z.close();
} catch (FileNotFoundException e) {
    ...
} catch (IOException e) {
    ...
}

3 Exemple de méthode qui dézippe un fichier zip

public static void deZippe(String aDezipper, String vers){
   // dezippe l'archive aDezipper dans le répertoire existant vers
   try {
      ZipInputStream zin = new ZipInputStream(new BufferedInputStream(new FileInputStream (aDezipper)));
      ZipEntry entry;
      System.out.println("extraction de : ");
      while((entry = zin.getNextEntry()) != null) {
         System.out.println("    "+entry.getName()+" "+entry.getMethod()+" compression : "+(int)(100-100.0*entry.getCompressedSize()/entry.getSize())+"%");
         int i= entry.getName().lastIndexOf('/')
         if( i!=-1){
            // création de sous répertoires si besoin
            File f = new File(vers+"/"+entry.getName().substring(0,i));
            f.mkdirs();
         }
         // copie du fichier entry.getName()
         BufferedOutputStream fo = new BufferedOutputStream( new FileOutputStream(vers+"/"+entry.getName()));
         for(int c = zin.read();c != -1; c=zin.read()) fo.write(c);
         fo.close();
      }
      zin.close();
      System.out.println("c'est fini !");
   } catch (FileNotFoundException e) {
      ...
   } catch (IOException e) {
      ...
   }
}

haut de la page