Travailler avec les archives ZIP en C# (.NET) : guide complet

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 C# (.NET) : création, lecture et gestion



Dans les applications modernes, il est souvent nécessaire de compresser des fichiers pour économiser de l'espace ou faciliter leur transfert. La plateforme .NET fournit des outils puissants et pratiques pour travailler avec les archives ZIP directement prêts à l'emploi. En utilisant l'espace de noms System.IO.Compression, vous pouvez facilement créer, extraire et modifier des archives sans installer de bibliothèques tierces. Dans cet article, nous allons détailler toutes les opérations principales.



Ajout des espaces de noms nécessaires

Pour commencer, assurez-vous que les directives suivantes sont ajoutées à votre projet :

using System;using System.IO;using System.IO.Compression;using System.Linq;


Création d'une archive ZIP

La façon la plus simple de créer une archive est d'utiliser la classe ZipFile. Elle est disponible à partir de .NET Framework 4.5 et .NET Core.



Création d'une archive à partir d'un seul dossier

string sourceDirectory = @"C:\\MyDocuments";string zipFilePath = @"C:\\MyArchive.zip";

// Crée une archive à partir de tous les fichiers du dossier spécifiéZipFile.CreateFromDirectory(sourceDirectory, zipFilePath);Console.WriteLine("Archive créée : " + zipFilePath);


Création d'une archive avec des paramètres supplémentaires

Vous pouvez spécifier le niveau de compression et ajouter un préfixe de chemin à l'intérieur de l'archive :

string sourceDir = @"C:\\Data";string outputZip = @"C:\\Data.zip";

// CompressionLevel.Optimal - compression maximale// includeBaseDirectory: true - conserve la structure des dossiersZipFile.CreateFromDirectory( sourceDir, outputZip, CompressionLevel.Optimal, includeBaseDirectory: true);Console.WriteLine("Archive créée avec optimisation.");


Extraction de fichiers d'une archive

Décompression de toute l'archive dans un dossier

string zipPath = @"C:\\MyArchive.zip";string extractPath = @"C:\\ExtractedFiles";

// Décompresse tout le contenuZipFile.ExtractToDirectory(zipPath, extractPath);Console.WriteLine("Archive décompressée avec succès.");


Décompression avec écrasement des fichiers existants

// Dans .NET 6+, vous pouvez spécifier l'écrasementZipFile.ExtractToDirectory(zipPath, extractPath, overwriteFiles: true);


Travailler avec des entrées individuelles dans l'archive

La classe ZipArchive offre un contrôle total sur le contenu de l'archive.



Lecture de la liste des fichiers dans l'archive

using (ZipArchive archive = ZipFile.OpenRead(@"C:\\Archive.zip")){    foreach (ZipArchiveEntry entry in archive.Entries)    {        Console.WriteLine($"Fichier : {entry.FullName}, Taille : {entry.Length} octets");    }}


Extraction d'un fichier spécifique de l'archive

string zipFilePath = @"C:\\Archive.zip";string entryName = @"folder\\document.txt"; // chemin à l'intérieur de l'archivestring outputPath = @"C:\\Output\\document.txt";

using (ZipArchive archive = ZipFile.OpenRead(zipFilePath)){ ZipArchiveEntry entry = archive.GetEntry(entryName); if (entry != null) { // Extrait le fichier entry.ExtractToFile(outputPath, overwrite: true); Console.WriteLine($"Fichier '{entryName}' extrait."); } else { Console.WriteLine("Fichier non trouvé dans l'archive."); }}


Ajout et suppression de fichiers d'une archive existante

Pour modifier une archive existante, ouvrez-la en mode ZipArchiveMode.Update :



Ajout d'un nouveau fichier à l'archive

string existingZip = @"C:\\Archive.zip";string fileToAdd = @"C:\\NewFile.txt";

using (ZipArchive archive = ZipFile.Open(existingZip, ZipArchiveMode.Update)){ // Ajoute le fichier avec le nom "NewFile.txt" à la racine de l'archive archive.CreateEntryFromFile(fileToAdd, "NewFile.txt"); Console.WriteLine("Fichier ajouté à l'archive.");}


Suppression d'un fichier de l'archive

using (ZipArchive archive                    

Recommendations