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
- Instalar IronZIP en nuestro proyecto
- Crear un archivo ZIP
- Crear archivo ZIP protegido con contraseña
- Extraer archivo ZIP
- Extraer archivo ZIP protegido con contraseña
- 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:
- 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.
- 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.
- 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 IronZipCreació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 ClassEl 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
fileArrayy le asigna el resultado del métodoDirectory.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 llamadaarchivey está envuelta en una declaraciónusing, que asegura que el archivo ZIP sea eliminado cuando el bloque de código termine. - Itera sobre el arreglo
fileArrayusando un bucleforeach, y para cada archivo, llama al métodoAdddel objetoarchive, 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
SaveAsdel objetoarchive, 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:

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 ClassLa 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

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 ClassEl 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 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 ClassEl 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 ClassEl 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

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.








