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.
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#.
- Primero, cree un objeto FileStream para cargar el archivo ZIP.
- Luego, cargue el archivo ZIP usando la clase Archive.
- Iterar a través de cada ArchiveEntry en la colección Archive.Entries.
- Filtre los archivos ZIP en la colección y para cada archivo realice los siguientes pasos:
- Cree un objeto MemoryStream y copie la entrada del archivo usando el método ArchiveEntry.Open().CopyTo(Stream).
- Cree una instancia de la clase Archive para cargar el archivo anidado.
- Finalmente, extraiga el archivo en una carpeta usando el método Archive.ExtractToDirectory(string).
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.
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.