Bienvenue dans l’exemple de décompression de fichiers Java. Dans le dernier article, nous avons appris comment compresser des fichiers et des répertoires en Java, ici nous allons décompresser le même fichier zip créé à partir d’un répertoire vers un autre répertoire de sortie.
Décompression de fichiers Java
Pour décompresser un fichier zip, nous devons lire le fichier zip avec la classe ZipInputStream
et ensuite lire toutes les ZipEntry
une par une. Ensuite, nous utilisons la classe FileOutputStream
pour les écrire dans le système de fichiers. Nous devons également créer le répertoire de sortie s’il n’existe pas et tous les répertoires imbriqués présents dans le fichier zip. Voici le programme Java de décompression de fichier qui décompresse le fichier tmp.zip
précédemment créé vers le répertoire de sortie.
package com.journaldev.files;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnzipFiles {
public static void main(String[] args) {
String zipFilePath = "/Users/pankaj/tmp.zip";
String destDir = "/Users/pankaj/output";
unzip(zipFilePath, destDir);
}
private static void unzip(String zipFilePath, String destDir) {
File dir = new File(destDir);
// créer le répertoire de sortie s'il n'existe pas
if(!dir.exists()) dir.mkdirs();
FileInputStream fis;
// tampon pour lire et écrire les données dans le fichier
byte[] buffer = new byte[1024];
try {
fis = new FileInputStream(zipFilePath);
ZipInputStream zis = new ZipInputStream(fis);
ZipEntry ze = zis.getNextEntry();
while(ze != null){
String fileName = ze.getName();
File newFile = new File(destDir + File.separator + fileName);
System.out.println("Unzipping to "+newFile.getAbsolutePath());
// créer les répertoires pour les sous-répertoires dans le zip
new File(newFile.getParent()).mkdirs();
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
// fermer cette ZipEntry
zis.closeEntry();
ze = zis.getNextEntry();
}
// fermer la dernière ZipEntry
zis.closeEntry();
zis.close();
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Une fois le programme terminé, nous avons tous les contenus du fichier zip dans le dossier de sortie avec la même hiérarchie de répertoires. La sortie du programme ci-dessus est :
Unzipping to /Users/pankaj/output/.DS_Store
Unzipping to /Users/pankaj/output/data/data.dat
Unzipping to /Users/pankaj/output/data/data.xml
Unzipping to /Users/pankaj/output/data/xmls/project.xml
Unzipping to /Users/pankaj/output/data/xmls/web.xml
Unzipping to /Users/pankaj/output/data.Xml
Unzipping to /Users/pankaj/output/DB.xml
Unzipping to /Users/pankaj/output/item.XML
Unzipping to /Users/pankaj/output/item.xsd
Unzipping to /Users/pankaj/output/ms/data.txt
Unzipping to /Users/pankaj/output/ms/project.doc
C’est tout pour l’exemple de décompression de fichier Java.
Source:
https://www.digitalocean.com/community/tutorials/java-unzip-file-example