précédent | suivant | table des matières
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) { ... } }