Leyendo archivos Zip con la librería SharpZip

La librería SharpZip es una excelente opción para trabajar con archivos comprimidos como .zip. Esta biblioteca admite Zip, GZip, BZip2 y Tar.

Para usar esta librería, simplemente agreguemos el paquete a nuestro proyecto usando el administrador de paquetes en Visual Studio o usando el siguiente comando.

dotnet add package SharpZipLib --version 1.4.2

Primero, necesitamos agregar el siguiente espacio de nombres al proyecto.

using ICSharpCode.SharpZipLib.Zip;

Luego, para leer el archivo, necesitamos definir la ruta; podría ser una ruta relativa o absoluta.

var myZipPath = "test.zip";

Y finalmente, con el siguiente fragmento simple, podemos recorrer todos los archivos incluidos en el zip y leer el contenido.

using (ZipFile zipFile = new ZipFile(myZipPath))
{
    foreach(ZipEntry zip in zipFile)
    {
        Console.WriteLine(zip.Name);
        using (StreamReader reader = new StreamReader(zipFile.GetInputStream(zip)))
        {
            Console.WriteLine($"Content: {reader.ReadToEnd()}");
            reader.Close();
        }
    }
}

También podemos verificar si el valor de ZipEntry es una carpeta o un archivo para evitar problemas al leer la información. Tenemos una condición simple. Podemos validarlo.

using (ZipFile zipFile = new ZipFile(myZipPath))
{
    foreach(ZipEntry zip in zipFile)
    {
        if(!zip.IsDirectory)
        {
            Console.WriteLine(zip.Name);
            using (StreamReader reader = new StreamReader(zipFile.GetInputStream(zip)))
            {
                Console.WriteLine($"Content: {reader.ReadToEnd()}");
                reader.Close();
            }
        }
    }
}

Referencia: Reading Zip Files with SharpZip Library in .NET (c-sharpcorner.com)

Recuerda siempre seguir aprendiendo con mis cursos en mteheran.dev/cursos