
{filelink=23}
import java.io.*;
import java.util.*;
import java.util.jar.*;
import java.util.zip.*;
public class Decompression
{
public static void extraireDossiers(String fichierZip, String extension)
{
try
{
System.out.println("Extraction de fichier "+fichierZip+".....");
int BUFFER = 2048;
File fichier = new File(fichierZip);
ZipFile zip = new ZipFile(fichier);
// créer un répertoire avec le même nom que le fichier compressé
String nouveauRep = fichierZip.substring(0, fichierZip.length() - (extension.length()+1));
new File(nouveauRep).mkdir();
Enumeration fichierZipEntries = zip.entries();
// Parcouriri le contenu du fichier compressé
while (fichierZipEntries.hasMoreElements())
{
// début du traitement de l'entrée courante
ZipEntry entry = (ZipEntry) fichierZipEntries.nextElement();
String currentEntry = entry.getName();
File fichierDest = new File(nouveauRep, currentEntry);
File destinationParent = fichierDest.getParentFile();
// Création de répertoire container si nécessaire pour l'entrée courante
destinationParent.mkdirs();
if (!entry.isDirectory())
{
// Création d'un "Buffer" pour l'écriture de fichier
BufferedInputStream is = new BufferedInputStream(zip
.getInputStream(entry));
int currentByte;
byte data[] = new byte[BUFFER];
// Ecriture de fichier courant sur le disque
FileOutputStream fichier_out = new FileOutputStream(fichierDest);
BufferedOutputStream dest = new BufferedOutputStream(fichier_out,
BUFFER);
while ((currentByte = is.read(data, 0, BUFFER)) != -1)
{
dest.write(data, 0, currentByte);
}
dest.flush();
dest.close();
is.close();
// Fin du traitement de l'entrée courante
}
/*
Si le fichier contient un autre fichier compressé,
reproduire la même action avec une récursion
*/
if (currentEntry.endsWith(extension))
{
extraireDossiers(fichierDest.getAbsolutePath(),extension);
}
}
} catch (IOException err)
{
err.printStackTrace();
return;
}
}
public static void main(String arg[])
{
// Extraction d'un fichier zip
extraireDossiers("test2.zip","zip");
// Extraction d'un fichier jar
extraireDossiers("test.jar","jar");
}
}