Saltar al pie de página
USANDO IRONZIP

Cómo comprimir archivos en una carpeta usando C#

Los archivos ZIP son archivos que contienen uno o más archivos o carpetas comprimidos utilizando el formato ZIP. Es una forma común de comprimir y archivar múltiples archivos o carpetas en un solo archivo. Pueden reducir el tamaño de los datos, ahorrar espacio en disco y facilitar la transferencia de archivos a través de Internet. En este artículo, aprenderás a trabajar con ZIP archivos en C# utilizando la biblioteca IronZIP. Verás cómo crear, leer, extraer y actualizar archivos ZIP de forma programática, así como cómo utilizar diversas características de IronZIP, como el cifrado, la protección con contraseña y los niveles de compresión. Al final de este artículo, podrás usar IronZIP para manejar archivos ZIP en tus aplicaciones de C# con facilidad.

Qué cubriremos 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 a archivo ZIP existente

¿Qué es IronZip?

IronZIP es una biblioteca de archivo ZIP para C# poderosa y versátil que te permite crear, leer y extraer archivos ZIP de forma programática. Es compatible con varios formatos de archivo, como ZIP, TAR, GZIP, y BZIP2. También soporta protección con contraseña, cifrado y niveles de compresión. IronZIP es compatible con .NET 8, 7, 6, Core, Standard y Framework.

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

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

Introducción a IronZIP

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

Instalación de la biblioteca IronZIP

Para instalar IronZIP, puedes usar la consola del Administrador de paquetes NuGet en Visual Studio. Simplemente ejecuta el siguiente comando:

Install-Package IronZip

Alternativamente, puedes descargar el paquete directamente desde el sitio web oficial de IronZIP. Una vez instalado, puedes comenzar agregando el siguiente espacio de nombres en la parte superior de tu código C#.

using IronZip;
using IronZip;
Imports IronZip
$vbLabelText   $csharpLabel

Creación de archivos ZIP de C# en una carpeta

Puedes crear fácilmente archivos ZIP en una carpeta usando IronZIP. El siguiente código comprimirá todos los archivos desde el directorio especificado.

using System;
using System.IO;
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Get all files from the specified directory
        string[] fileArray = Directory.GetFiles(@"D:\Docs\");

        // Create a new ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Iterate through each file and add it to the archive
            foreach (var file in fileArray)
            {
                archive.Add(file); // Add files to the ZIP
            }
            // Save the archive to a file
            archive.SaveAs("myZipFile.zip");
        }
    }
}
using System;
using System.IO;
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Get all files from the specified directory
        string[] fileArray = Directory.GetFiles(@"D:\Docs\");

        // Create a new ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Iterate through each file and add it to the archive
            foreach (var file in fileArray)
            {
                archive.Add(file); // Add files to the ZIP
            }
            // Save the archive to a file
            archive.SaveAs("myZipFile.zip");
        }
    }
}
Imports System
Imports System.IO
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Get all files from the specified directory
		Dim fileArray() As String = Directory.GetFiles("D:\Docs\")

		' Create a new ZIP archive
		Using archive = New IronZipArchive()
			' Iterate through each file and add it to the archive
			For Each file In fileArray
				archive.Add(file) ' Add files to the ZIP
			Next file
			' Save the archive to a file
			archive.SaveAs("myZipFile.zip")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

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

  • Declara un arreglo de strings llamado fileArray y le asigna el resultado del método Directory.GetFiles, pasando la ruta del directorio ("D:\Docs") como parámetro. Este método devuelve un arreglo de strings que contiene los nombres completos de todos los archivos en el directorio especificado.
  • Crea una nueva instancia de la clase IronZipArchive, que representa un archivo ZIP en memoria. La instancia se asigna a una variable llamada archive y está envuelta en una declaración using, que asegura que el archivo ZIP sea eliminado cuando el bloque de código termine.
  • Itera sobre el arreglo fileArray usando 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 archivo.
  • Llama al método SaveAs del objeto archive, pasando el nombre del archivo ZIP ("myZipFile.zip") como parámetro. Este método guarda el archivo ZIP en un archivo en el sistema de archivos actual.

De esta manera, puedes crear fácilmente nuevos archivos ZIP usando solo unas pocas líneas de código.

Resultado

La salida es la siguiente:

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

Crear un archivo ZIP protegido con contraseña

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

using System;
using System.IO;
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Get all files from the specified directory
        string[] fileArray = Directory.GetFiles(@"D:\Docs\");

        // Create a new ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Iterate through each file and add it to the archive
            foreach (var file in fileArray)
            {
                archive.Add(file); // Add files to the ZIP
            }
            // Set Password and Encryption Method
            archive.Encrypt("myPa55word", EncryptionMethods.AES256);
            // Save the archive to a file
            archive.SaveAs("myZipFile.zip");
        }
    }
}
using System;
using System.IO;
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Get all files from the specified directory
        string[] fileArray = Directory.GetFiles(@"D:\Docs\");

        // Create a new ZIP archive
        using (var archive = new IronZipArchive())
        {
            // Iterate through each file and add it to the archive
            foreach (var file in fileArray)
            {
                archive.Add(file); // Add files to the ZIP
            }
            // Set Password and Encryption Method
            archive.Encrypt("myPa55word", EncryptionMethods.AES256);
            // Save the archive to a file
            archive.SaveAs("myZipFile.zip");
        }
    }
}
Imports System
Imports System.IO
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Get all files from the specified directory
		Dim fileArray() As String = Directory.GetFiles("D:\Docs\")

		' Create a new ZIP archive
		Using archive = New IronZipArchive()
			' Iterate through each file and add it to the archive
			For Each file In fileArray
				archive.Add(file) ' Add files to the ZIP
			Next file
			' Set Password and Encryption Method
			archive.Encrypt("myPa55word", EncryptionMethods.AES256)
			' Save the archive to a file
			archive.SaveAs("myZipFile.zip")
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

La línea archive.Encrypt("myPa55word", EncryptionMethods.AES256); establece una contraseña ("myPa55word") para un archivo ZIP usando IronZIP. Mejora la seguridad aplicando cifrado AES-256 al archivo, asegurando que solo los usuarios con la contraseña correcta puedan acceder a su contenido. Esta característica es valiosa para proteger datos sensibles durante el almacenamiento o la transferencia dentro de aplicaciones C#. Debes pasar el modo especificado del algoritmo de cifrado en el segundo parámetro.

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

Resultado

Cómo comprimir archivos en una carpeta usando C#: Figura 2 - Archivo cifrado de salida del ejemplo de código anterior

Hemos visto la demostración de cómo crear un archivo ZIP iterando a través de los directorios de la ruta especificada. Ahora, pasemos al ejemplo de descomprimir archivos.

Extraer archivos de un archivo ZIP

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

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract all files from the ZIP archive to the specified directory
        IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract all files from the ZIP archive to the specified directory
        IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Extract all files from the ZIP archive to the specified directory
		IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles")
	End Sub
End Class
$vbLabelText   $csharpLabel

El código IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles"); utiliza IronZIP para extraer todos los archivos de "myZipFile.zip" y colocarlos en el directorio "myExtractedFiles". Este método conciso simplifica el proceso de extracción de archivos ZIP en C#, proporcionando una solución conveniente para tareas de extracción de archivos.

Resultado

La salida es la siguiente:

Cómo comprimir archivos en una carpeta usando 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 con contraseña. El siguiente código utilizará el método IronZIP para extraer todos los archivos y directorios existentes del archivo ZIP especificado.

using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract all files from the password-protected ZIP archive to the specified directory
        IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
    }
}
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Extract all files from the password-protected ZIP archive to the specified directory
        IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word");
    }
}
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Extract all files from the password-protected ZIP archive to the specified directory
		IronZipArchive.ExtractArchiveToDirectory("myZipFile.zip", "myExtractedFiles", "myPa55word")
	End Sub
End Class
$vbLabelText   $csharpLabel

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 ("myZipFile.zip"), la ruta del directorio de destino ("myExtractedFiles") y la contraseña del archivo ZIP ("myPa55word").

De esta manera, puedes extraer fácilmente archivos ZIP protegidos con 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 System;
using System.Collections.Generic;
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive with a password
        using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
        {
            // Get entries list
            List<string> names = archive.GetArchiveEntryNames();
            // Iterate through each entry name and print it
            foreach (string name in names)
            {
                Console.WriteLine(name);
            }
        }
    }
}
using System;
using System.Collections.Generic;
using IronZip;

class Program
{
    static void Main(string[] args)
    {
        // Open an existing ZIP archive with a password
        using (var archive = new IronZipArchive("myZipFile.zip", "myPa55word"))
        {
            // Get entries list
            List<string> names = archive.GetArchiveEntryNames();
            // Iterate through each entry name and print it
            foreach (string name in names)
            {
                Console.WriteLine(name);
            }
        }
    }
}
Imports System
Imports System.Collections.Generic
Imports IronZip

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		' Open an existing ZIP archive with a password
		Using archive = New IronZipArchive("myZipFile.zip", "myPa55word")
			' Get entries list
			Dim names As List(Of String) = archive.GetArchiveEntryNames()
			' Iterate through each entry name and print it
			For Each name As String In names
				Console.WriteLine(name)
			Next name
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

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

El método GetArchiveEntryNames recopila los nombres de las entradas, y un ciclo foreach imprime cada nombre en la consola. Esto demuestra cómo IronZIP permite el acceso seguro y la recuperación de información de entrada de archivos ZIP protegidos con contraseña de manera concisa.

Resultado

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

Conclusión

En conclusión, IronZIP demuestra ser una biblioteca robusta y versátil para C# al trabajar con archivos ZIP. Sus capacidades van más allá de la compresión básica y la extracción, ofreciendo características como la protección con contraseña, cifrado y compatibilidad con varios formatos de archivo. Ya sea que estés creando sistemas de respaldo, gestionando adjuntos de correo electrónico o descargando archivos de la web, IronZIP simplifica estas tareas con simplicidad y eficiencia.

Al integrar IronZIP en tus aplicaciones C#, obtienes una herramienta poderosa para manejar archivos ZIP, mejorar la seguridad de los datos y optimizar los procesos de transferencia de archivos. Puedes beneficiarte de una prueba gratuita según sea necesario.

Preguntas Frecuentes

¿Cómo puedo crear un archivo ZIP desde una carpeta en C#?

Puede usar IronZIP para crear un archivo ZIP desde una carpeta iterando a través de los archivos en el directorio y agregándolos a un nuevo archivo ZIP. Use la clase IronZipArchive y llame al método SaveAs para guardar el archivo ZIP.

¿Cómo instalo IronZIP en un proyecto C#?

Instale IronZIP en su proyecto de C# usando el Administrador de Paquetes NuGet en Visual Studio. Ejecute el comando Install-Package IronZip en la Consola del Administrador de Paquetes o descárguelo desde el sitio oficial de IronZIP.

¿Qué formatos soporta IronZIP para el manejo de archivos ZIP?

IronZIP soporta varios formatos de archivo, incluyendo ZIP, TAR, GZIP y BZIP2, ofreciendo flexibilidad para diferentes necesidades de compresión y archivado.

¿Puedo cifrar archivos ZIP creados en C#?

Sí, puede cifrar archivos ZIP usando IronZIP aplicando el método Encrypt con cifrado AES-256 para asegurar sus datos dentro del archivo.

¿Cómo puedo extraer archivos de un archivo ZIP en C#?

Para extraer archivos de un archivo ZIP usando IronZIP, use el método ExtractArchiveToDirectory, especificando el archivo ZIP de origen y el directorio de destino.

¿Es posible manejar archivos ZIP protegidos por contraseña en C#?

Sí, puede manejar archivos ZIP protegidos por contraseña con IronZIP proporcionando la contraseña al usar métodos como ExtractArchiveToDirectory para acceder a los contenidos de manera segura.

¿Cuáles son las ventajas de usar IronZIP para la gestión de archivos ZIP?

IronZIP simplifica tareas como la copia de seguridad de archivos, gestión de archivos adjuntos de correo electrónico y descargas web ofreciendo características como cifrado, protección con contraseña y soporte para múltiples formatos de archivo.

¿IronZIP soporta .NET 8 y otras versiones?

IronZIP es compatible con .NET 8, 7, 6, Core, Standard y Framework, lo que lo hace flexible para la integración en varios proyectos de C#.

¿Cómo pueden los desarrolladores acceder a una versión de prueba de IronZIP?

Los desarrolladores pueden acceder a una prueba gratuita de IronZIP visitando la sección de licencias o descargas del sitio web de IronZIP para evaluar sus características.

¿Cuál es el beneficio de usar archivos ZIP para la transferencia de datos?

Los archivos ZIP son beneficiosos para la transferencia de datos ya que reducen el tamaño del archivo, ahorran espacio en disco y facilitan el envío de múltiples archivos a través de internet de manera eficiente.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más