A menudo nos encontramos con el escenario en el que varios archivos ZIP están encapsulados dentro de otro ZIP. En tales casos, primero debe extraer el ZIP principal y luego los archivos anidados uno por uno. Para facilitarle las cosas, en este artículo, demostraremos cómo extraer los archivos ZIP anidados en C# .NET sin escribir código complejo.

C# .NET API para extraer archivos ZIP anidados

Para descomprimir los archivos ZIP anidados, utilizaremos Aspose.ZIP for .NET. La API está diseñada para realizar operaciones de archivado desde las aplicaciones .NET. Le permite crear y manipular formatos de archivo populares sin problemas. Puede descargar la DLL de la API o instalarla mediante NuGet.

PM> Install-Package Aspose.Zip

Extraer archivos ZIP anidados en C#

Para demostrar la extracción de archivos ZIP anidados, hemos creado el siguiente archivo ZIP que contiene 3 entradas.

Archivos ZIP anidados

Archivos ZIP anidados

Extraeremos cada archivo ZIP anidado y guardaremos su contenido en una carpeta separada. Los siguientes son los pasos para extraer archivos ZIP anidados en C#.

El siguiente ejemplo de código muestra cómo descomprimir archivos ZIP anidados en C# .NET.

// Abrir archivo ZIP en un flujo de archivos
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
    // Cargue el archivo ZIP usando la clase Archive
    using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
    {
        // Acceda a cada entrada en el archivo ZIP
        foreach(ArchiveEntry entry in archive.Entries)
        {
            if(entry.Name.ToLower().Contains(".zip"))
            {
                // Crear flujo de memoria para archivo anidado
                MemoryStream nestedArchiveStream = new MemoryStream();

                // Copiar archivo a flujo de memoria
                entry.Open().CopyTo(nestedArchiveStream);

                // Cargue el archivo anidado desde el flujo de memoria
                using (var nestedArchive = new Archive(nestedArchiveStream))
                {
                    // Extraiga el archivo al disco.
                    nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
                }                               

            }

        } 
    }
}

La siguiente es la captura de pantalla de los archivos ZIP extraídos.

Extracción de archivos ZIP anidados en C# .NET

Archivos anidados descomprimidos

Obtenga una licencia de API gratuita

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

Conclusión

En este artículo, ha aprendido a extraer archivos ZIP anidados en C#. La guía paso a paso y el ejemplo de código han demostrado cómo descomprimir cada archivo anidado en una carpeta separada. Además, puede visitar documentación para explorar otras funciones de Aspose.ZIP for .NET. Además, puede hacer sus preguntas a través de nuestro foro.

Ver también