Fusionner plusieurs archives ZIP ou TAR en C#

Lorsque vous travaillez avec des archives à partir de vos applications .NET, vous devrez peut-être fusionner plusieurs fichiers ZIP ou TAR. Par exemple, vous souhaiterez peut-être extraire des fichiers et des dossiers de plusieurs archives et les placer dans une seule archive. Pour y parvenir, cet article explique comment fusionner plusieurs fichiers ZIP ou TAR en C#. Nous couvrirons la fusion de ZIP en ZIP, de TAR en TAR, de ZIP en TAR et de TAR en ZIP.

API C# .NET pour fusionner les fichiers ZIP et TAR

Pour fusionner plusieurs archives ZIP et TAR, nous utiliserons Aspose.ZIP for .NET. Il s’agit d’une API .NET riche en fonctionnalités qui vous permet de créer et de manipuler divers formats d’archives populaires. Vous pouvez soit télécharger la DLL de l’API, soit l’installer directement à l’aide de NuGet.

PM> Install-Package Aspose.Zip

Fusionner plusieurs fichiers ZIP en C#

Commençons notre voyage de fusion d’archives au format ZIP. Nous allons prendre deux archives ZIP et collecter leurs entrées dans un seul fichier ZIP. Voici les étapes pour fusionner plusieurs fichiers ZIP en C#.

L’exemple de code suivant montre comment fusionner deux fichiers ZIP en C#.

// Charger l'archive ZIP source
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Charger l'archive ZIP de destination
    using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Itérer sur les entrées
        foreach (ArchiveEntry entry in sourceArchive.Entries)
        {
            // Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
            if (!entry.IsDirectory)
            {
                // Charger l'entrée dans le flux de mémoire
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Ajouter une entrée au ZIP de destination
                destArchive.CreateEntry(entry.Name, mem);
            } 
        }

        // Enregistrer l'archive fusionnée séparément
        destArchive.Save("Archives/merged-archive.zip");
    }
}

Fusionner plusieurs fichiers TAR en C#

Voyons maintenant comment fusionner plusieurs archives TAR en C#. Voici les étapes pour y parvenir.

L’exemple de code suivant montre comment fusionner plusieurs fichiers TAR en C#.

// Charger l'archive TAR source
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Charger l'archive TAR de destination
    using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Itérer sur les entrées
        foreach (TarEntry entry in sourceArchive.Entries)
        {
            // Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
            if (!entry.IsDirectory)
            {
                // Charger l'entrée dans le flux de mémoire
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Ajouter une entrée au TAR de destination
                destArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Enregistrer l'archive fusionnée séparément
        destArchive.Save("Archives/merged-archive.tar");
    }
}

Fusionner ZIP dans TAR en C#

Dans cette section, nous verrons comment fusionner un fichier ZIP dans une archive TAR en C#. Voici les étapes pour effectuer cette opération.

L’exemple de code suivant montre comment fusionner une archive ZIP dans TAR.

// Charger l'archive ZIP source
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Charger l'archive TAR de destination
    using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Itérer sur les entrées
        foreach (ArchiveEntry entry in zipArchive.Entries)
        {
            // Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
            if (!entry.IsDirectory)
            {
                // Charger l'entrée dans le flux de mémoire
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Ajouter une entrée au TAR de destination
                tarArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Enregistrer l'archive fusionnée séparément
        tarArchive.Save("Archives/merged-archive.tar");
    }
}

Combiner TAR avec ZIP en C#

Comme dans l’exemple précédent, vous pouvez fusionner un fichier TAR en ZIP. L’exemple de code suivant montre comment extraire des fichiers d’un TAR et les fusionner dans un ZIP.

// Charger l'archive TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Charger l'archive ZIP
    using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Itérer sur les entrées
        foreach (TarEntry entry in tarArchive.Entries)
        {
            // Vérifiez si l'entrée n'est pas un répertoire. Les entrées qui sont des répertoires sont ignorées, mais leurs fichiers sont ajoutés en respectant les chemins relatifs.
            if (!entry.IsDirectory)
            {
                // Charger l'entrée dans le flux de mémoire
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Ajouter une entrée au ZIP
                zipArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Enregistrer l'archive fusionnée séparément
        zipArchive.Save("Archives/merged-archive.zip");
    }
}

Obtenez une licence API gratuite

Vous pouvez utiliser Aspose.ZIP for .NET sans limitation d’évaluation en obtenant une licence temporaire gratuite.

Conclusion

Dans cet article, vous avez appris à fusionner plusieurs archives ZIP ou TAR par programmation en C#. En particulier, nous avons expliqué comment fusionner dynamiquement des fichiers ZIP, des fichiers TAR, ZIP dans TAR et TAR dans ZIP. Pour en savoir plus sur Aspose.ZIP for .NET, vous pouvez consulter la documentation. Vous pouvez également poster vos questions sur notre forum.

Voir également