Combinar varios archivos ZIP o TAR en C#

Mientras trabaja con archivos desde sus aplicaciones .NET, es posible que deba fusionar varios archivos ZIP o TAR. Por ejemplo, es posible que desee extraer archivos y carpetas de varios archivos y colocarlos en un solo archivo. Para lograrlo, este artículo cubre cómo fusionar múltiples archivos ZIP o TAR en C#. Cubriremos la fusión de ZIP en ZIP, TAR en TAR, ZIP en TAR y TAR en ZIP.

C# .NET API para fusionar archivos ZIP y TAR

Para fusionar varios archivos ZIP y TAR, aprovecharemos Aspose.ZIP for .NET. Es una API .NET rica en funciones que le permite crear y manipular varios formatos de archivo populares. Puede descargar la DLL de la API o instalarla directamente usando NuGet.

PM> Install-Package Aspose.Zip

Combinar varios archivos ZIP en C#

Comencemos nuestro viaje de fusionar archivos con formato ZIP. Tomaremos dos archivos ZIP y recopilaremos sus entradas en un solo archivo ZIP. Los siguientes son los pasos para combinar varios archivos ZIP en C#.

El siguiente ejemplo de código muestra cómo fusionar dos archivos ZIP en C#.

// Cargue el archivo ZIP de origen
using (Archive sourceArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Cargar archivo ZIP de destino
    using (Archive destArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iterar sobre las entradas
        foreach (ArchiveEntry entry in sourceArchive.Entries)
        {
            // Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
            if (!entry.IsDirectory)
            {
                // Cargar entrada al flujo de memoria
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Agregar entrada al código postal de destino
                destArchive.CreateEntry(entry.Name, mem);
            } 
        }

        // Guardar archivo combinado por separado
        destArchive.Save("Archives/merged-archive.zip");
    }
}

Combinar varios archivos TAR en C#

Veamos ahora cómo fusionar varios archivos TAR en C#. Los siguientes son los pasos para lograrlo.

El siguiente ejemplo de código muestra cómo fusionar varios archivos TAR en C#.

// Cargue el archivo TAR de origen
using (TarArchive sourceArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Cargar archivo TAR de destino
    using (TarArchive destArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iterar sobre las entradas
        foreach (TarEntry entry in sourceArchive.Entries)
        {
            // Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
            if (!entry.IsDirectory)
            {
                // Cargar entrada al flujo de memoria
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Agregar entrada al TAR de destino
                destArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Guardar archivo combinado por separado
        destArchive.Save("Archives/merged-archive.tar");
    }
}

Combinar ZIP en TAR en C#

En esta sección, veremos cómo fusionar un archivo ZIP en un archivo TAR en C#. Los siguientes son los pasos para realizar esta operación.

El siguiente ejemplo de código muestra cómo fusionar un archivo ZIP en TAR.

// Cargue el archivo ZIP de origen
using (Archive zipArchive = new Archive("Archives/SourceArchive.zip"))
{
    // Cargar archivo TAR de destino
    using (TarArchive tarArchive = new TarArchive("Archives/DestinationArchive.tar"))
    {
        // Iterar sobre las entradas
        foreach (ArchiveEntry entry in zipArchive.Entries)
        {
            // Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
            if (!entry.IsDirectory)
            {
                // Cargar entrada al flujo de memoria
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Agregar entrada al TAR de destino
                tarArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Guardar archivo combinado por separado
        tarArchive.Save("Archives/merged-archive.tar");
    }
}

Combinar TAR con ZIP en C#

Similar al ejemplo anterior, puede combinar un archivo TAR en ZIP. El siguiente ejemplo de código muestra cómo extraer archivos de un TAR y fusionarlos en un ZIP.

// Cargar archivo TAR
using (TarArchive tarArchive = new TarArchive("Archives/SourceArchive.tar"))
{
    // Cargar archivo ZIP
    using (Archive zipArchive = new Archive("Archives/DestinationArchive.zip"))
    {
        // Iterar sobre las entradas
        foreach (TarEntry entry in tarArchive.Entries)
        {
            // Verifique que la entrada no sea un directorio. Las entradas que son directorios se omiten, pero sus archivos se agregan respetando las rutas relativas.
            if (!entry.IsDirectory)
            {
                // Cargar entrada al flujo de memoria
                MemoryStream mem = new MemoryStream();
                entry.Open().CopyTo(mem);

                // Agregar entrada a ZIP
                zipArchive.CreateEntry(entry.Name, mem);
            }
        }

        // Guardar archivo combinado por separado
        zipArchive.Save("Archives/merged-archive.zip");
    }
}

Obtenga una licencia de API gratuita

Puede usar Aspose.ZIP for .NET sin limitaciones de evaluación al obtener una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido a fusionar varios archivos ZIP o TAR mediante programación en C#. En particular, hemos cubierto cómo fusionar archivos ZIP, archivos TAR, ZIP en TAR y TAR en ZIP dinámicamente. Para explorar más sobre Aspose.ZIP for .NET, puede visitar la documentación. Además, puede publicar sus consultas en nuestro foro.

Ver también