Crear Archivo ZIP Plano en C#

Al trabajar con archivos ZIP, puedes encontrar un escenario donde un archivo ZIP contiene otros archivos ZIP, creando una estructura anidada. Si deseas optimizar esto extrayendo todos los archivos ZIP internos en el archivo externo, estás en el lugar correcto. En este artículo, exploraremos cómo crear un archivo ZIP plano en C# utilizando el poderoso Aspose.ZIP para .NET.

Tabla de Contenidos

Descripción general de la API de .NET para Crear Archivos ZIP Planos

Para crear archivos ZIP planos, utilizaremos la biblioteca Aspose.ZIP para .NET. Esta robusta API de archivado te permite crear y extraer varios formatos de archivo, incluyendo ZIP, TAR, GZip y 7z. Puedes instalar fácilmente esta biblioteca desde NuGet o descargar su DLL desde la sección de descargas.

PM> Install-Package Aspose.Zip

Pasos para Crear un Archivo ZIP Plano en C#

Para entender mejor la estructura de un archivo ZIP plano, considera el siguiente ejemplo. Inicialmente, tenemos un archivo ZIP que contiene otro archivo ZIP:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

Después de transformar este archivo ZIP en una estructura plana, todas las entradas del ZIP interno serán extraídas al ZIP padre, lo que llevará a la siguiente estructura:

flatten.zip
 ├ first.txt
 ├ picture.gif
 ├ game.exe
 └ subitem.bin

Pasos de Implementación

Así es como crear programáticamente un archivo ZIP plano en C#:

  1. Cargar el Archivo ZIP Padre: Utiliza la clase Archive para cargar el ZIP padre.
  2. Inicializar Listas: Crea listas para almacenar:
    • Entradas a eliminar del ZIP padre
    • Entradas extraídas y sus nombres
  3. Iterar a Través de las Entradas del Archivo: Recorre cada ArchiveEntry en el ZIP padre usando la colección Archive.Entries.
  4. Procesar Cada Entrada:
    • Verifica si la entrada es un archivo ZIP usando ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • Si lo es, agrégalo a la lista de entradas a eliminar.
    • Abre la entrada en un objeto MemoryStream usando ArchiveEntry.Open().CopyTo(MemoryStream).
    • Itera a través de las entradas del archivo ZIP interno, realizando lo siguiente:
      • Agrega el nombre de cada entrada a la lista de entradas a ser añadidas.
      • Carga cada entrada en un MemoryStream usando ArchiveEntry.Open().CopyTo(MemoryStream).
      • Agrega la entrada a la lista de entradas a ser añadidas al ZIP padre.
  5. Eliminar Entradas ZIP Internas: Recorre la lista de archivos ZIP internos y elimina cada entrada usando el método Archive.DeleteEntry(ArchiveEntry).
  6. Agregar Nuevas Entradas al ZIP Padre: Recorre la lista de entradas a agregar e incluye cada entrada usando el método Archive.CreateEntry(String, Stream).
  7. Guardar el Archivo ZIP Padre: Finalmente, guarda el archivo ZIP padre modificado usando el método Archive.Save(String).

Aquí hay un ejemplo de código que demuestra cómo crear un archivo ZIP plano en C#:

Obtener una Licencia de API Gratuita

Puedes obtener una licencia temporal gratuita para usar Aspose.ZIP para .NET sin ninguna limitación de evaluación.

Conclusión

En este tutorial, has aprendido cómo crear eficientemente un archivo ZIP plano utilizando C#. Demostramos el proceso de extracción de archivos ZIP internos en el ZIP padre, evitando efectivamente carpetas anidadas. Para más información, no dudes en consultar la documentación de Aspose.ZIP para .NET, o contáctanos a través de nuestro foro.

Ver También