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