Comment créer un fichier ZIP en mémoire en C#

Comment créer un fichier ZIP en mémoire en C#

Dans ce tutoriel étape par étape, vous apprendrez comment créer un fichier ZIP en mémoire en utilisant C#. Le processus décrit ici vous permet de compresser des fichiers et des dossiers au format ZIP sans avoir besoin de créer un fichier physique sur le disque.

Avantages de la création de fichiers ZIP en mémoire

  1. Performance :
    • Évite la surcharge d’E/S disque, rendant le processus plus rapide.
  2. Stockage temporaire :
    • Garde les fichiers en mémoire pour un accès et un traitement rapides.
  3. Flexibilité :
    • Facilite les opérations comme l’envoi de fichiers sur un réseau sans stockage intermédiaire.

Prérequis : Préparer l’environnement

  1. Configurez Visual Studio ou tout IDE .NET compatible.
  2. Installez Aspose.ZIP à partir du Gestionnaire de packages NuGet.

Guide étape par étape pour créer un fichier ZIP en mémoire

Étape 1 : Installer Aspose.ZIP

Commencez par ajouter la bibliothèque Aspose.ZIP à votre projet.

Install-Package Aspose.ZIP

Étape 2 : Inclure l’espace de noms

Ajoutez l’espace de noms Aspose.Zip à votre code pour utiliser ses fonctionnalités.

using Aspose.Zip;

Étape 3 : Charger des fichiers depuis le disque

Récupérez les chemins des fichiers du dossier source dans un tableau de chaînes.

string[] filesArray = Directory.GetFiles("YourFolderPath", "*.*", SearchOption.TopDirectoryOnly);

Étape 4 : Créer un objet Archive

Instanciez un objet Archive en mémoire pour contenir les entrées ZIP.

using (MemoryStream zipFileInMemory = new MemoryStream())
{
    using (Archive zipArchive = new Archive())
    {
        // Le traitement supplémentaire suit ici
    }
}

Étape 5 : Créer des entrées d’archive

Parcourez le tableau de fichiers et créez une ArchiveEntry pour chaque fichier.

foreach (string fileDiskPath in filesArray)
{
    string fileName = Path.GetFileName(fileDiskPath);
    zipArchive.CreateEntry(fileName, fileDiskPath);
}

Étape 6 : Enregistrer le fichier ZIP en mémoire

Créez l’archive ZIP en mémoire en l’enregistrant dans le MemoryStream.

zipArchive.Save(zipFileInMemory);

Exemple de code complet pour créer un fichier ZIP en mémoire

Voici le code complet qui illustre comment créer un fichier ZIP en mémoire :

// Créer une instance de MemoryStream pour le fichier ZIP
using (MemoryStream zipFileInMemory = new MemoryStream())
{
    // Créer un objet Archive vide pour ZIP
    using (Archive zipArchive = new Archive())
    {
        // Obtenir tous les fichiers d'un dossier et stocker leurs chemins dans un tableau de chaînes
        string[] filesArray = Directory.GetFiles("YourFolderPath", "*.*", SearchOption.TopDirectoryOnly);

        // Parcourir le tableau et créer une ArchiveEntry pour chaque fichier
        foreach (string fileDiskPath in filesArray)
        {
            string fileName = Path.GetFileName(fileDiskPath);
            zipArchive.CreateEntry(fileName, fileDiskPath);
        }

        // Enregistrer l'Archive en mémoire
        zipArchive.Save(zipFileInMemory);
    }
}

Informations supplémentaires

  • Vous pouvez facilement modifier le code pour appliquer des méthodes de chiffrement ou de compression au fichier ZIP.
  • Cette solution vous permet d’effectuer d’autres opérations sur le fichier ZIP en mémoire, comme l’envoyer sur un réseau ou l’enregistrer sur le disque plus tard.

Conclusion

Ce tutoriel a démontré comment créer un fichier ZIP en mémoire en utilisant C#. En suivant le plan fourni, vous pouvez gérer efficacement la compression de fichiers au sein de vos applications sans avoir besoin de créer des fichiers physiques. Pour des fonctionnalités plus avancées comme l’extraction de fichiers ZIP, consultez la documentation supplémentaire d’Aspose.ZIP.

 Français