Saltar al pie de página
COMPARAR CON OTROS COMPONENTES

Tutorial de archivo ZIP para desarrolladores de C# usando IronXL

Introducción a ZipArchive

Cada vez que piensas en enviar un archivo en un formato comprimido, lo primero que viene a la mente suele ser un Archivo Zip. Un archivo zip es un formato popular para comprimir y empaquetar un solo archivo o una colección completa en un solo archivo. Sin embargo, cuando hay grandes volúmenes de archivos para comprimir, trabajar con ellos puede volverse frustrante ya que tendrías que archivarlos y formatearlos uno por uno. Pero no tiene por qué ser así. Las tareas de gran volumen necesitan automatización para realizarse de manera programática. Podemos utilizar IronZip, una biblioteca simple pero intuitiva, para lograr todo eso y más.

En este artículo, discutiremos brevemente las características y funcionalidades principales de IronZip y cómo puede ayudarte a automatizar mejor tu flujo de trabajo, aumentar la eficiencia y eliminar tareas manuales propensas a errores.

Crear un nuevo archivo zip desde una carpeta o archivos

Abajo se muestra un ejemplo que toma múltiples archivos, los comprime en un solo archivo y los exporta después de la operación. Todos los ejemplos en este artículo están encapsulados en el método static void Main() para evitar bloques de código repetidos.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Create an empty ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Add files to the ZIP archive
            archive.Add("./assets/image1.jpg");
            archive.Add("./assets/image2.jpg");
            archive.Add("./assets/image3.jpg");

            // Export the ZIP archive to a file
            archive.SaveAs("output.zip");
        }
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Create an empty ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Add files to the ZIP archive
            archive.Add("./assets/image1.jpg");
            archive.Add("./assets/image2.jpg");
            archive.Add("./assets/image3.jpg");

            // Export the ZIP archive to a file
            archive.SaveAs("output.zip");
        }
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Create an empty ZIP archive
		Using archive = New IronZipArchive()
			' Add files to the ZIP archive
			archive.Add("./assets/image1.jpg")
			archive.Add("./assets/image2.jpg")
			archive.Add("./assets/image3.jpg")

			' Export the ZIP archive to a file
			archive.SaveAs("output.zip")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. Primero importamos IronZip.
  2. Luego, utilizando IronZip, creamos un archivo.
  3. Llamamos a archive.Add() para agregar múltiples archivos al archivo. Recuerda que los nombres de las rutas deben ser rutas absolutas o la operación fallará al encontrar los archivos correspondientes.
  4. Finalmente, llamamos a archive.SaveAs() para exportar el archivo zip como output.zip.

Actualizar un archivo zip existente con nuevos archivos o modificaciones

Veamos otro ejemplo; esta vez, editaremos el archivo zip existente con nuevos archivos para mostrar la funcionalidad de IronZip.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive
        using (var archive = IronZipArchive.FromFile("existing.zip"))
        {
            // Add additional files to the existing ZIP archive
            archive.Add("./assets/image3.png");
            archive.Add("./assets/image4.png");

            // Export the updated ZIP archive to a new file
            archive.SaveAs("result.zip");
        }
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive
        using (var archive = IronZipArchive.FromFile("existing.zip"))
        {
            // Add additional files to the existing ZIP archive
            archive.Add("./assets/image3.png");
            archive.Add("./assets/image4.png");

            // Export the updated ZIP archive to a new file
            archive.SaveAs("result.zip");
        }
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Open an existing ZIP archive
		Using archive = IronZipArchive.FromFile("existing.zip")
			' Add additional files to the existing ZIP archive
			archive.Add("./assets/image3.png")
			archive.Add("./assets/image4.png")

			' Export the updated ZIP archive to a new file
			archive.SaveAs("result.zip")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel
  1. Primero importamos IronZip.
  2. Utilizando IronZip, creamos un archivo, pero esta vez, importamos el archivo zip existente con IronZipArchive.FromFile().
  3. Llamamos a archive.Add() para agregar los archivos deseados al archivo. Recuerda que los nombres de las rutas deben ser rutas absolutas o la operación fallará al encontrar los archivos existentes.
  4. Finalmente, llamamos a archive.SaveAs() para exportar el archivo zip actualizado como result.zip.

Como puedes ver en el código anterior, la operación y el formato son similares a los utilizados para crear y agregar archivos a un archivo Zip. La principal diferencia es que en su lugar importamos el archivo zip, mostrando la funcionalidad simple pero intuitiva de IronZip.

Extraer archivos de un archivo zip

También podemos usar IronZip para extraer archivos de un archivo Zip o paquete Zip. Revisemos esto en otro ejemplo.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Extract the ZIP archive content to a specified directory
		IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted")
	End Sub
End Class
$vbLabelText   $csharpLabel

Importamos IronZip y llamamos a IronZipArchive.ExtractArchiveToDirectory(). Este método extrae el contenido del archivo zip existente al directorio de destino especificado.

Además, en casos donde necesites tratar con archivos zip protegidos por contraseña, podemos usar otro método para extraer los archivos.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the protected ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract the protected ZIP archive content to a specified directory
        IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Extract the protected ZIP archive content to a specified directory
		IronZipArchive.ExtractArchiveToDirectory("output.zip", "extracted", "P@ssw0rd")
	End Sub
End Class
$vbLabelText   $csharpLabel

En última instancia, añadimos otro parámetro: la contraseña para el archivo zip protegido. El resto de la operación es igual que se muestra arriba.

Temas avanzados y mejores prácticas

Los ejemplos de código para agregar, extraer y crear archivos discutidos arriba son los más comunes cuando se trata de archivos zip. Sin embargo, para un uso más avanzado, como extraer otros formatos o simplemente ver el contenido del archivo, IronZIP lo tiene cubierto y más.

Características avanzadas de IronZIP

  • Compatibilidad cruzada: IronZIP es compatible con una amplia gama de versiones de .NET, incluyendo .NET Core (3.1+), Standard (2.0+) y .NET Framework (4.6.2+). La biblioteca también funciona en la Web (Blazor), Móvil (MAUI), Escritorio (WPF) y Consola. Esto permite a los desarrolladores trascender las limitaciones de plataforma y versión.

  • Generación de Archivos: Más allá del formato ZIP, IronZIP admite la creación de archivos TAR, GZIP y BZIP2.

  • Extracción de Archivos: Extrae archivos y descomprime archivos fácilmente con IronZIP usando un único bloque de código, como se demostró antes.

  • Agregar Archivos y Sistemas de Archivos: IronZIP ayuda en la manipulación de archivos zip al agregar imágenes, archivos de texto y documentos (como PDFs, DOCX y XLSX), así como archivos de audio como MP3 y WAV. Incluso puede comprimir sistemas de archivos completos o archivos de texto individuales en un archivo ZipArchive.

  • Exportar y Crear: Puedes proteger los archivos con contraseña usando los estándares AES128 y AES256. Además, puedes generar y exportar formatos como TAR, GZIP y BZIP2.

  • Niveles de Compresión Personalizados: IronZIP permite a los desarrolladores ajustar la configuración de compresión para afinar el algoritmo a sus necesidades.

  • Edición de Archivos: Agrega fácilmente, extrae o elimina entradas de archivos en un archivo utilizando IronZIP como una solución integral para operaciones relacionadas con la edición.

  • Propiedades de Entrada de Archivos: IronZIP proporciona la capacidad de establecer comentarios de archivo opcionales y recuperar nombres de archivos dentro del archivo sin extraerlos, lo que permite dejar comentarios específicos para cada archivo.

  • Opciones de Licencia: IronZIP ofrece opciones de licencia adaptables, incluidas versiones de prueba gratuitas, permitiendo a los desarrolladores seleccionar lo que mejor se adapte a sus necesidades.

Conclusión

Tratar con archivos comprimidos y archivos es una tarea diaria a la que los desarrolladores a menudo se enfrentan, pero manejar un gran volumen de ellos puede ser estresante y propenso a errores humanos. Aunque existen opciones como System.IO.Compression, usar IronZIP te permite lograr más y resolver rápidamente problemas al tratar con archivos comprimidos. En este artículo, discutimos las características avanzadas de IronZIP y las operaciones comunes como crear archivos zip, eliminar entradas o agregar archivos. Entender cómo realizar estas tareas programáticamente con IronZIP conduce a una mayor eficiencia, escalabilidad y automatización en el manejo de archivos.

Por favor notaSystem.IO.Compression es una marca registrada de su respectivo propietario. Este sitio no está afiliado, respaldado ni patrocinado por System.IO.Compression. Todos los nombres de producto, logotipos y marcas son propiedad de sus respectivos dueños. Las comparaciones son sólo para fines informativos y reflejan información disponible públicamente al momento de escribir.

Preguntas Frecuentes

¿Cómo creo un archivo ZIP a partir de una carpeta en C#?

Para crear un archivo ZIP a partir de una carpeta en C#, puedes usar la biblioteca IronZip. Primero, importa la biblioteca IronZip, crea una instancia de IronZipArchive, añade la carpeta usando archive.AddFolder() y guárdalo con archive.SaveAs().

¿Cuál es el proceso para extraer datos de un archivo ZIP en C#?

Puedes extraer datos de un archivo ZIP en C# usando IronZip llamando al método IronZipArchive.ExtractArchiveToDirectory(). Este método te permite especificar un directorio donde se extraerán los contenidos.

¿Cómo puedo actualizar el contenido de un archivo ZIP programáticamente en C#?

Para actualizar el contenido de un archivo ZIP programáticamente en C#, usa IronZip cargando el archivo existente con IronZipArchive.FromFile(), luego usa archive.Add() para añadir archivos o archive.Remove() para eliminar archivos antes de guardar los cambios con archive.SaveAs().

¿Puede IronZip manejar archivos ZIP con contraseña?

Sí, IronZip puede manejar archivos ZIP con contraseña. Puedes especificar una contraseña al extraer archivos usando el método IronZipArchive.ExtractArchiveToDirectory() proporcionando la contraseña como un parámetro adicional.

¿Cuáles son los beneficios de usar IronZip sobre System.IO.Compression para el manejo de archivos ZIP?

IronZip ofrece características avanzadas sobre System.IO.Compression, como soporte para múltiples formatos de archivo, protección con contraseña, niveles de compresión personalizados y la capacidad de editar archivos añadiendo o eliminando archivos sin extraerlos.

¿Cómo asegura IronZip la compatibilidad cruzada con diferentes versiones de .NET?

IronZip asegura la compatibilidad cruzada al soportar múltiples versiones de .NET, permitiendo a los desarrolladores integrar la funcionalidad de manejo de archivos ZIP en aplicaciones que se ejecutan en varias plataformas y marcos.

¿Qué características avanzadas ofrece IronZip para el manejo de archivos ZIP?

IronZip ofrece características avanzadas como la generación y extracción de múltiples formatos de archivo (ZIP, TAR, GZIP, BZIP2), protección por contraseña, niveles de compresión personalizados y capacidades de edición completas sin necesidad de extraer archivos.

¿Es posible gestionar las propiedades de los archivos dentro de un archivo ZIP usando IronZip?

Sí, IronZip te permite gestionar propiedades de los archivos, como comentarios dentro de un archivo ZIP sin necesidad de extraer los archivos primero, mejorando la flexibilidad y eficiencia en la gestión de archivos.

¿Cómo puedo automatizar la creación y extracción de archivos ZIP en C#?

Puedes automatizar la creación y extracción de archivos ZIP en C# usando IronZip en un método static void Main(). Esto te permite automatizar procesos como añadir archivos a un archivo, extraer datos y actualizar archivos existentes programáticamente.

¿IronZip soporta el manejo de sistemas de archivos completos?

Sí, IronZip soporta la compresión y extracción de sistemas de archivos completos, haciéndolo adecuado para manejar volúmenes grandes de datos de manera eficiente.

Jordi Bardia
Ingeniero de Software
Jordi es más competente en Python, C# y C++. Cuando no está aprovechando sus habilidades en Iron Software, está programando juegos. Compartiendo responsabilidades para pruebas de productos, desarrollo de productos e investigación, Jordi agrega un valor inmenso a la mejora continua del producto. La experiencia variada lo mantiene ...
Leer más