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) {
...
}
}