USO DE IRONZIP

Cómo comprimir archivos en una carpeta usando C#

Actualizado 18 de febrero, 2024
Compartir:

Los archivos ZIP son archivos que contienen uno o más archivos o carpetas comprimidos, utilizando el formato ZIP. Es una forma habitual de comprimir y archivar varios ficheros o carpetas en un único archivo. Pueden reducir el tamaño de los datos, ahorrar espacio en disco y facilitar la transferencia de archivos por Internet. En este artículo, aprenderá a trabajar con ZIP archivos en C#, utilizando el IronZIP biblioteca. Verá cómo crear, leer, extraer y actualizar archivos ZIP mediante programación, así como la forma de utilizar diversas características de IronZIP, como el cifrado, la protección por contraseña y los niveles de compresión. Al final de este artículo, usted será capaz de utilizar IronZIP para manejar archivos ZIP en sus aplicaciones C# con facilidad.

Lo que trataremos en este artículo

  1. Instalar IronZIP en nuestro proyecto
  2. Crear un archivo ZIP
  3. Crear archivo ZIP protegido con contraseña
  4. Extraer archivo ZIP
  5. Extraer archivo ZIP protegido con contraseña
  6. Acceder al archivo ZIP existente

¿Qué es IronZip?

IronZIP es una potente y versátil biblioteca de archivos ZIP en C# que permite crear, leer y extraer archivos ZIP mediante programación. Admite varios formatos de archivo, como ZIP, TAR, GZIPy BZIP2. También admite protección por contraseña niveles de cifrado y compresión. IronZIP es compatible con .NET 8, 7, 6, Core, Standard y Framework.

IronZIP puede ayudarle a manejar varios casos de uso y beneficios de trabajar con archivos ZIP, tales como:

  1. Crear un sistema de copias de seguridad: Puedes utilizar IronZIP para comprimir y cifrar tus archivos y carpetas importantes en un archivo ZIP y almacenarlos en un lugar seguro. De esta forma, puedes ahorrar espacio en disco y proteger tus datos de accesos no autorizados.
  2. Enviar archivos adjuntos por correo electrónico: Puedes utilizar IronZIP para reducir el tamaño de tus archivos adjuntos de correo electrónico comprimiéndolos en un archivo ZIP. Esto puede ayudarte a evitar superar el límite de tamaño de archivo y acelerar el proceso de transmisión.
  3. Descarga de archivos de la web: Puedes utilizar IronZIP para descargar y extraer archivos ZIP de la web, como paquetes de software, documentos, imágenes y otros tipos de archivos. Esto puede ayudarle a ahorrar ancho de banda y tiempo, y a acceder con facilidad a los archivos que necesita.

Primeros pasos con IronZIP

Antes de escribir el código, es necesario instalar el paquete NuGet IronZIP nuestro proyecto C#. IronZIP es una popular biblioteca de compresión disponible a través de NuGet.

Instalación de la biblioteca IronZIP

Para instalar IronZIP, puede utilizar la consola del gestor de paquetes NuGet en Visual Studio. Basta con ejecutar el siguiente comando:

Install-Package IronZip

También puede descargar el paquete directamente de la página oficial IronZIP sitio web. Una vez instalado, puede empezar añadiendo el siguiente espacio de nombres al principio de su código C#.

using IronZip;
using IronZip;
Imports IronZip
VB   C#

Creación de C# Archivos ZIP en Carpeta Archivo

Podemos crear fácilmente archivos ZIP en una carpeta utilizando IronZIP. El siguiente código comprimirá todos los archivos del directorio especificado.

static void Main(string [] args)
{
    string [] fileArray = Directory.GetFiles(@"D:\Docs\");
    using (var archive = new IronZipArchive())
    {
        foreach (var file in fileArray)
        {
            //  Añadir archivos al ZIP
            archive.Add(file);
        }
        //  Exportar el ZIP
        archive.SaveAs("myZipFile.zip");
    }
}
static void Main(string [] args)
{
    string [] fileArray = Directory.GetFiles(@"D:\Docs\");
    using (var archive = new IronZipArchive())
    {
        foreach (var file in fileArray)
        {
            //  Añadir archivos al ZIP
            archive.Add(file);
        }
        //  Exportar el ZIP
        archive.SaveAs("myZipFile.zip");
    }
}
Shared Sub Main(ByVal args() As String)
	Dim fileArray() As String = Directory.GetFiles("D:\Docs\")
	Using archive = New IronZipArchive()
		For Each file In fileArray
			'  Añadir archivos al ZIP
			archive.Add(file)
		Next file
		'  Exportar el ZIP
		archive.SaveAs("myZipFile.zip")
	End Using
End Sub
VB   C#

El código C# anterior utiliza la biblioteca IronZIP para comprimir todos los archivos en un único archivo ZIP. El código hace lo siguiente:

  • Hemos declarado un array de cadenas llamado fileArray y le hemos asignado el resultado del método Directory.GetFiles, pasándole la ruta del directorio ("D:\Docs") como parámetro. Este método devuelve una matriz de cadenas que contiene los nombres completos de todos los archivos del directorio especificado.
  • Hemos creado una nueva instancia de la clase IronZipArchive, que representa un archivo ZIP en memoria. La instancia se asigna a una variable denominada archivo y se envuelve en una sentencia using, que garantiza que el archivo ZIP se elimine cuando finalice el bloque de código.
  • A continuación, hemos iterado sobre la matriz fileArray utilizando un bucle foreach, y para cada archivo, llama al método Add del objeto archive, pasando el nombre del archivo como parámetro. Este método añade una nueva entrada al archivo ZIP, con el mismo nombre y contenido que el fichero.
  • Por último, hemos llamado al método SaveAs del objeto archivo, pasándole el nombre del fichero ZIP ("miArchivoZip.zip") como parámetro. Este método guarda el archivo ZIP en un fichero del sistema de ficheros actual.

    De este modo, podemos crear fácilmente nuevos archivos zip utilizando sólo unas pocas líneas de código.

Salida

La salida es como:

Cómo comprimir archivos en una carpeta utilizando C#: Figura 1 - Archivos de salida del ejemplo de código anterior

Crear archivo ZIP protegido con contraseña

IronZIP proporciona el método más sencillo para crear archivos ZIP protegidos por contraseña. El siguiente ejemplo de código comprimirá archivos y creará un nuevo archivo ZIP con una contraseña.

using (var archive = new IronZipArchive())
 {
     foreach (var file in fileArray)
     {
         //  Añadir archivos al ZIP
         archive.Add(file);
     }
    //  Establecer contraseña y método de cifrado
     archive.Encrypt("myPa55word", EncryptionMethods.AES256);
     //  Exportar el ZIP
     archive.SaveAs("myZipFile.zip");
 }
using (var archive = new IronZipArchive())
 {
     foreach (var file in fileArray)
     {
         //  Añadir archivos al ZIP
         archive.Add(file);
     }
    //  Establecer contraseña y método de cifrado
     archive.Encrypt("myPa55word", EncryptionMethods.AES256);
     //  Exportar el ZIP
     archive.SaveAs("myZipFile.zip");
 }
Using archive = New IronZipArchive()
	 For Each file In fileArray
		 '  Añadir archivos al ZIP
		 archive.Add(file)
	 Next file
	'  Establecer contraseña y método de cifrado
	 archive.Encrypt("myPa55word", EncryptionMethods.AES256)
	 '  Exportar el ZIP
	 archive.SaveAs("myZipFile.zip")
End Using
VB   C#

La línea archive.Encrypt("myPa55word", EncryptionMethods.AES256); establece una contraseña ("miPalabra55") para un archivo ZIP utilizando IronZIP. Aumenta la seguridad aplicando el cifrado AES-256 al archivo, lo que garantiza que sólo los usuarios con la contraseña correcta puedan acceder a su contenido. Esta función es valiosa para proteger datos confidenciales durante su almacenamiento o transferencia dentro de aplicaciones C#. Necesitamos pasar el modo especificado del algoritmo de encriptación en el segundo parámetro.

El archivo se encripta como se muestra a continuación.

Salida

Cómo comprimir archivos en carpetas usando C#: Figura 2 - Archivo encriptado resultante del ejemplo de código anterior

Hemos visto la demostración de crear un archivo ZIP recorriendo los directorios de la ruta especificada. Pasemos ahora al ejemplo de descomprimir archivos.

Extracción de archivos ZIP

IronZIP proporciona un método para extraer ficheros de un archivo ZIP C#. El siguiente ejemplo de código extraerá el fichero comprimido dentro de un archivo ZIP.

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles")
VB   C#

El código IronZipArchive.ExtractArchiveToDirectory("miArchivoZip.zip", "misArchivosExtraídos"); utiliza IronZIP para extraer todos los archivos de "miArchivoZip.zip" y los coloca en el directorio "misArchivosExtraídos". Este conciso método simplifica el proceso de extracción de archivos ZIP en C#, proporcionando una cómoda solución para las tareas de extracción de archivos.

Salida

El resultado es el siguiente:

Cómo comprimir archivos en una carpeta utilizando C#: Figura 3 - Archivos de salida del ejemplo de código anterior

Cómo extraer de un archivo ZIP protegido con contraseña

IronZIP también proporciona un método para extraer archivos ZIP protegidos por contraseña. El siguiente código utilizará el método IronZIP para extraer todos los archivos y directorios existentes en el archivo ZIP especificado.

IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word")
VB   C#

El método ExtractArchiveToDirectory de la clase IronZipArchive extrae todas las entradas de un archivo ZIP a un directorio especificado. Pasa tres argumentos al método: la ruta del archivo ZIP ("miArchivoZip.zip")la ruta del directorio de destino ("misArchivosExtraídos")y la contraseña del archivo ZIP ("miPalabra55").

De este modo, podemos extraer fácilmente archivos zip protegidos por contraseña.

Cómo acceder a un archivo existente

IronZIP proporciona métodos para acceder al archivo existente y ver todas las entradas presentes en el archivo.

using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
    //  Obtener lista de entradas
    List<string> names = archive.GetArchiveEntryNames();
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }
}
using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
{
    //  Obtener lista de entradas
    List<string> names = archive.GetArchiveEntryNames();
    foreach (string name in names)
    {
        Console.WriteLine(name);
    }
}
Using archive = New IronZipArchive("myZipFile.zip", "myPa55word")
	'  Obtener lista de entradas
	Dim names As List(Of String) = archive.GetArchiveEntryNames()
	For Each name As String In names
		Console.WriteLine(name)
	Next name
End Using
VB   C#

El código C# proporcionado utiliza IronZIP para crear una instancia segura de IronZipArchive cargando un archivo ZIP llamado "myZipFile.zip" con la contraseña "myPa55word". No pase el parámetro de contraseña si el archivo no está encriptado. A continuación, recupera e imprime la lista de nombres de entrada (nombres de archivos y carpetas) dentro del archivo ZIP encriptado.

El método GetArchiveEntryNames recopila los nombres de las entradas y un bucle for-each envía cada nombre a la consola. Esto demuestra cómo IronZIP permite el acceso seguro y la recuperación de información de entrada de archivos zip protegidos por contraseña de forma concisa.

Salida

Cómo comprimir archivos en una carpeta utilizando C#: Figura 4 - Salida del ejemplo de código anterior

Conclusión

En conclusión, IronZIP demuestra ser una librería C# robusta y versátil para trabajar con archivos ZIP. Sus capacidades van más allá de lo básico Compresión y extraccióncon funciones como protección por contraseña y compatibilidad con varios formatos de archivo. Tanto si está creando sistemas de copia de seguridad, gestionando archivos adjuntos de correo electrónico o descargando archivos de la Web, IronZIP agiliza estas tareas con sencillez y eficacia.

Al integrar IronZIP en sus aplicaciones C#, obtendrá una potente herramienta para manejar archivos ZIP, mejorar la seguridad de los datos y optimizar los procesos de transferencia de archivos. Puede beneficiarse de un Prueba según las necesidades.

< ANTERIOR
Cómo comprimir un archivo y extraerlo a un directorio en C#
SIGUIENTE >
Cómo extraer archivos Zip en VB .NET

¿Listo para empezar? Versión: 2024.7 recién publicada

Descarga gratuita de NuGet Descargas totales: 2,815 Ver licencias >
123