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 Aussi dans la bibliothèque
Travailler avec S3 et les stockages cloud en C# (.NET) : AWS SDK et MinIO
Rate Limiting en PHP : guide complet sur la limitation des requêtes
Travailler avec CSV en C# (.NET) : bibliothèques et exemples de code
Jetons JWT en C# (.NET) : guide complet avec exemples
Travailler avec Excel en TypeScript : bibliothèques, exemples et outils