Nous rencontrons souvent le scénario où plusieurs archives ZIP sont encapsulées dans un autre ZIP. Dans de tels cas, vous devez d’abord extraire le ZIP parent, puis les archives imbriquées une par une. Pour vous faciliter la tâche, dans cet article, nous vous montrerons comment extraire les archives ZIP imbriquées en C# .NET sans écrire de code complexe.

API C# .NET pour extraire les archives ZIP imbriquées

Pour décompresser les archives ZIP imbriquées, nous utiliserons Aspose.ZIP for .NET. L’API est conçue pour effectuer des opérations d’archivage à partir des applications .NET. Il vous permet de créer et de manipuler des formats d’archives populaires de manière transparente. Vous pouvez soit télécharger la DLL de l’API, soit l’installer à l’aide de NuGet.

PM> Install-Package Aspose.Zip

Extraire les archives ZIP imbriquées en C#

Pour démontrer l’extraction d’archives ZIP imbriquées, nous avons créé le fichier ZIP suivant qui contient 3 entrées.

Archives ZIP imbriquées

Archives ZIP imbriquées

Nous allons extraire chaque archive ZIP imbriquée et enregistrer son contenu dans un dossier séparé. Voici les étapes pour extraire les archives ZIP imbriquées en C#.

L’exemple de code suivant montre comment décompresser des archives ZIP imbriquées dans C# .NET.

// Ouvrir le fichier ZIP dans un flux de fichiers
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // Charger le fichier ZIP à l'aide de la classe Archive
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // Accéder à chaque entrée dans l'archive ZIP
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // Créer un flux de mémoire pour l'archive imbriquée
                MemoryStream nestedArchiveStream = new MemoryStream();

                // Copier l'archive dans le flux de mémoire
                entry.Open().CopyTo(nestedArchiveStream);

                // Charger l'archive imbriquée à partir du flux de mémoire
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // Extrayez l'archive sur le disque.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

Voici la capture d’écran des archives ZIP extraites.

Extraction d'archives ZIP imbriquées dans C# .NET

Archives imbriquées décompressées

Obtenez une licence API gratuite

Vous pouvez obtenir une licence temporaire gratuite pour utiliser Aspose.ZIP for .NET sans limitations d’évaluation.

Conclusion

Dans cet article, vous avez appris à extraire des archives ZIP imbriquées en C#. Le guide étape par étape et l’exemple de code ont montré comment décompresser chaque archive imbriquée dans un dossier séparé. En outre, vous pouvez visiter documentation pour explorer d’autres fonctionnalités d’Aspose.ZIP for .NET. Vous pouvez également poser vos questions via notre forum.

Voir également