Travailler avec les archives ZIP en Java : guide complet sur java.util.zip

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec les archives ZIP en Java : guide complet



Dans le développement moderne en Java, il est souvent nécessaire de compresser et décompresser des fichiers. ZIP est l'un des formats de compression les plus populaires, pris en charge par la bibliothèque standard de Java. Le package intégré java.util.zip fournit tous les outils nécessaires pour travailler avec les archives ZIP sans installer de dépendances tierces.



Classes principales du package java.util.zip



Le package java.util.zip comprend plusieurs classes clés pour travailler avec les archives :



  • ZipOutputStream — pour créer des archives ZIP et y écrire des fichiers
  • ZipInputStream — pour lire le contenu des archives ZIP
  • ZipEntry — représente une entrée individuelle (fichier ou répertoire) dans l'archive
  • ZipFile — pour un accès direct aux entrées de l'archive par leur nom
  • Deflater/Inflater — classes de bas niveau pour la compression/décompression des données


Création d'une archive ZIP



Pour créer une archive, on utilise ZipOutputStream. Chaque fichier ajouté est représenté comme un ZipEntry. Voici un exemple qui compresse plusieurs fichiers dans une seule archive :



import java.io.*;import java.util.zip.*;

public class CreateZipExample { public static void main(String[] args) { // Tableau de fichiers à archiver String[] sourceFiles = {"file1.txt", "file2.txt", "image.png"}; String zipFileName = "archive.zip";

try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFileName))) { byte[] buffer = new byte[1024];

for (String filePath : sourceFiles) { File file = new File(filePath); // Créer une entrée dans l'archive ZipEntry zipEntry = new ZipEntry(file.getName()); zos.putNextEntry(zipEntry);

// Lire le fichier et l'écrire dans l'archive try (FileInputStream fis = new FileInputStream(file)) { int length; while ((length = fis.read(buffer)) > 0) { zos.write(buffer, 0, length); } } zos.closeEntry(); } System.out.println("Archive créée : " + zipFileName); } catch (IOException e) { e.printStackTrace(); } }}


Extraction d'une archive ZIP



Pour lire une archive, on utilise ZipInputStream. La méthode getNextEntry() retourne séquentiellement toutes les entrées de l'archive :



import java.io.*;import java.util.zip.*;

public class ExtractZipExample { public static void main(String[] args) { String zipFileName = "archive.zip"; String outputDir = "extracted_files";

new File(outputDir).mkdir();

try (ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFileName))) { ZipEntry entry; byte[] buffer = new byte[1024];

while ((entry = zis.getNextEntry()) != null) { String fileName = entry.getName(); File newFile = new File(outputDir + File.separator + fileName);

// Créer les répertoires si nécessaire new File(newFile.getParent()).mkdirs();

try (FileOutputStream fos = new FileOutputStream(newFile)) { int length; while ((length = zis.read(buffer)) > 0) { fos.write(buffer, 0, length); } } zis.closeEntry(); System.out.println("Extrait : " + fileName); } } catch (IOException e) { e.printStackTrace(); } }}


Travailler avec ZipFile pour un accès aléatoire

\

Recommendations