Saltar al pie de página
USANDO IRONZIP

Cómo abrir archivo zip en C#

ZIP es un formato de sistema de archivos de entrada de archivo que admite la compresión de datos sin pérdida. Un archivo ZIP puede contener uno o más archivos o directorios que pueden haber sido comprimidos. El formato de archivo ZIP permite varios algoritmos de compresión, aunque DEFLATE es el más común. El formato ZIP fue rápidamente soportado por muchas utilidades de software. Los principales proveedores de sistemas operativos han incluido soporte para archivos ZIP durante mucho tiempo. Microsoft ha incluido soporte para archivos ZIP desde Windows 98 y el resto siguió su ejemplo.

En este blog, vamos a explorar una forma moderna, fácil y eficiente de abrir archivos de archivo ZIP o archivos extraídos usando IronZIP. Vamos a aprender sobre los archivos ZIP en general y sus ventajas. Luego veremos las opciones disponibles en el espacio de nombres del sistema para trabajar con el formato de archivo ZIP. Luego exploraremos instrucciones paso a paso para abrir el archivo ZIP, extraer el archivo ZIP a una carpeta temporal, crear un nuevo archivo ZIP y agregar archivos a archivos ZIP existentes.

Ventajas de utilizar archivos ZIP en aplicaciones de software

  1. Compresión: Esta técnica reduce el tamaño de los archivos/carpetas archivados utilizando varios algoritmos de compresión como Implode, Deflate, Deflate64, bzip2, LZMA, WavPack, PPMd, etc.
  2. Tiempo de transferencia reducido: Tamaños de archivo más pequeños significan tiempos de transferencia más rápidos, especialmente al enviar archivos por Internet. Esto es particularmente ventajoso para archivos adjuntos de correo electrónico y la carga o descarga de archivos desde sitios web.
  3. Consolidación de archivos: Los archivos ZIP te permiten consolidar varios archivos en un solo archivo, reduciendo el número de archivos que necesitas gestionar. Esto es útil para organizar proyectos o distribuir software que consiste en múltiples archivos.
  4. Protección con contraseña: Muchas utilidades ZIP ofrecen la opción de proteger el archivo con una contraseña, agregando una capa de seguridad a tus archivos. Esto es útil cuando deseas restringir el acceso al contenido del archivo ZIP.

Cree archivos ZIP y extraiga archivos ZIP con IronZIP

La introducción a la biblioteca IronZIP y la documentación se pueden encontrar aquí. En aplicaciones C#, los archivos ZIP se pueden crear y extraer de varias maneras. El paquete NuGet de IronZIP tiene todas las funcionalidades para archivar archivos en diferentes formatos: ZIP, TAR, GZIP y BZIP2. A continuación se muestran los pasos de ejemplo sobre cómo usar IronZIP en la programación de aplicaciones modernas para construir aplicaciones de próxima generación para abrir archivos ZIP, extraer archivos ZIP, crear nuevos archivos ZIP, etc.

Paso 1. Crear una aplicación de consola .NET Core

Crear proyecto

La aplicación de consola .NET se puede crear usando Visual Studio. Abre Visual Studio y selecciona Crear proyecto. Aquí puedes ver varias plantillas para crear un proyecto. La forma más fácil de demostrar o probar el código es creando una aplicación de consola. Seleccionaremos la plantilla de proyecto de aplicación de consola.

Cómo abrir un archivo ZIP en C#: Figura 1 - Nuevo Proyecto

Introduzca el nombre del proyecto

En la ventana de abajo, puedes ingresar el nombre del proyecto, la ubicación del proyecto para almacenar en el sistema de archivos y el último es la ruta a la carpeta de solución. Puedes mantener las carpetas de la solución y del proyecto iguales o tenerlas en carpetas diferentes.

Cómo abrir un archivo ZIP en C#: Figura 2 - Configurar Proyecto

Seleccionar la versión de .NET Framework

El siguiente paso es seleccionar la versión del .NET Framework para el proyecto. Si deseas desarrollar en una versión específica, entonces especifica la versión que te gusta. De lo contrario, siempre selecciona la última versión estable para crear un proyecto. La última versión se puede descargar del sitio web de Microsoft. Luego haz clic en Crear para generar la aplicación de consola.

Cómo abrir un archivo ZIP en C#: Figura 3 - Framework de destino

Esto creará el proyecto predeterminado desde la plantilla y almacenará los archivos del proyecto y la solución en los directorios especificados. Una vez que se crea el proyecto, se verá similar a abajo. A veces, la clase no se usa en el program.cs en las últimas versiones.

// Import necessary namespaces
using System;

// Define the namespace
namespace MyApp // Note: actual namespace depends on the project name.
{
    // Define the Program class
    internal class Program
    {
        // Main method: Entry point of the application
        static void Main(string[] args)
        {
            // Print a welcome message
            Console.WriteLine("Hello, World!");
        }
    }
}
// Import necessary namespaces
using System;

// Define the namespace
namespace MyApp // Note: actual namespace depends on the project name.
{
    // Define the Program class
    internal class Program
    {
        // Main method: Entry point of the application
        static void Main(string[] args)
        {
            // Print a welcome message
            Console.WriteLine("Hello, World!");
        }
    }
}
' Import necessary namespaces
Imports System

' Define the namespace
Namespace MyApp ' Note: actual namespace depends on the project name.
	' Define the Program class
	Friend Class Program
		' Main method: Entry point of the application
		Shared Sub Main(ByVal args() As String)
			' Print a welcome message
			Console.WriteLine("Hello, World!")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Para crear un nuevo archivo ZIP y extraer todos los archivos de archivo ZIP, podemos usar System.IO.Compression de las bibliotecas predeterminadas. El siguiente código demuestra cómo usar los métodos estáticos ZipFile.OpenRead y ZipFile.Open para abrir archivos ZIP o extraer archivos ZIP.

// Import necessary namespaces
using System;
using System.IO;
using System.IO.Compression;

public class ZipExample
{
    public static void Main()
    {
        Console.WriteLine("-----------Zip - Unzip-----------");

        // Method to add a file entry to the ZIP archive
        static void AddEntry(string filePath, ZipArchive zipArchive)
        {
            // Get file name from the file path
            var file = Path.GetFileName(filePath);

            // Create a new entry in the ZIP archive for the file
            zipArchive.CreateEntryFromFile(filePath, file);
        }

        // Name of the ZIP file to be created
        var zip = "myFile.zip";

        // Open or create the ZIP file for updating
        using (ZipArchive archive = ZipFile.Open(zip, ZipArchiveMode.Update))
        {
            // Add files to the archive
            AddEntry("file1.txt", archive);
            AddEntry("file2.txt", archive);
        }

        // Directory where we want to extract the ZIP files
        var dirToExtract = "extract";

        // Create the directory if it does not exist
        if (!Directory.Exists(dirToExtract))
        {
            Directory.CreateDirectory(dirToExtract);
        }

        // Extract the contents of the ZIP file to the specified directory
        ZipFile.ExtractToDirectory(zip, dirToExtract);

        // Indicate that extraction is complete
        Console.WriteLine("Files extracted to: " + dirToExtract);
    }
}
// Import necessary namespaces
using System;
using System.IO;
using System.IO.Compression;

public class ZipExample
{
    public static void Main()
    {
        Console.WriteLine("-----------Zip - Unzip-----------");

        // Method to add a file entry to the ZIP archive
        static void AddEntry(string filePath, ZipArchive zipArchive)
        {
            // Get file name from the file path
            var file = Path.GetFileName(filePath);

            // Create a new entry in the ZIP archive for the file
            zipArchive.CreateEntryFromFile(filePath, file);
        }

        // Name of the ZIP file to be created
        var zip = "myFile.zip";

        // Open or create the ZIP file for updating
        using (ZipArchive archive = ZipFile.Open(zip, ZipArchiveMode.Update))
        {
            // Add files to the archive
            AddEntry("file1.txt", archive);
            AddEntry("file2.txt", archive);
        }

        // Directory where we want to extract the ZIP files
        var dirToExtract = "extract";

        // Create the directory if it does not exist
        if (!Directory.Exists(dirToExtract))
        {
            Directory.CreateDirectory(dirToExtract);
        }

        // Extract the contents of the ZIP file to the specified directory
        ZipFile.ExtractToDirectory(zip, dirToExtract);

        // Indicate that extraction is complete
        Console.WriteLine("Files extracted to: " + dirToExtract);
    }
}
' Import necessary namespaces
Imports System
Imports System.IO
Imports System.IO.Compression

Public Class ZipExample
	Public Shared Sub Main()
		Console.WriteLine("-----------Zip - Unzip-----------")

		' Method to add a file entry to the ZIP archive
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'		static void AddEntry(string filePath, ZipArchive zipArchive)
'		{
'			' Get file name from the file path
'			var file = Path.GetFileName(filePath);
'
'			' Create a new entry in the ZIP archive for the file
'			zipArchive.CreateEntryFromFile(filePath, file);
'		}

		' Name of the ZIP file to be created
		Dim zip = "myFile.zip"

		' Open or create the ZIP file for updating
		Using archive As ZipArchive = ZipFile.Open(zip, ZipArchiveMode.Update)
			' Add files to the archive
			AddEntry("file1.txt", archive)
			AddEntry("file2.txt", archive)
		End Using

		' Directory where we want to extract the ZIP files
		Dim dirToExtract = "extract"

		' Create the directory if it does not exist
		If Not Directory.Exists(dirToExtract) Then
			Directory.CreateDirectory(dirToExtract)
		End If

		' Extract the contents of the ZIP file to the specified directory
		ZipFile.ExtractToDirectory(zip, dirToExtract)

		' Indicate that extraction is complete
		Console.WriteLine("Files extracted to: " & dirToExtract)
	End Sub
End Class
$vbLabelText   $csharpLabel

En el código anterior, se utiliza un archivo ZIP llamado myFile.zip con el espacio de nombres del sistema. El método Open se utiliza para abrir el archivo ZIP en un modo especificado. Esto también se puede usar para crear nuevos archivos de archivo ZIP. Una vez abierto, podemos agregar una nueva entrada de archivo utilizando el método AddEntry, y luego ExtractToDirectory extrae archivos de archivo ZIP al directorio especificado. Si el directorio no existe, se crea usando Directory.CreateDirectory.

Paso 2. Instalación de IronZIP mediante el Administrador de paquetes NuGet

Abre el Administrador de Proyectos desde Visual Studio y busca el paquete IronZIP. Luego selecciona la última versión y haz clic en Instalar. Puedes cambiar la versión a instalar desde el desplegable. Luego haz clic en Instalar.

Cómo abrir un archivo ZIP en C#: Figura 4 - Administrador de paquetes NuGet

Cree un archivo ZIP y agregue archivos usando IronZIP

Cómo abrir un archivo ZIP en C#: Figura 5 - IronZIP

IronZIP es una biblioteca de compresión y descompresión de archivos desarrollada por Iron Software. Además del formato ZIP ampliamente usado, también puede manejar TAR, GZIP y BZIP2.

IronZIP es una biblioteca C# de archivos ZIP que prioriza la precisión, facilidad de uso y velocidad. Su API fácil de usar permite a los desarrolladores agregar fácilmente funcionalidad de archivo a proyectos modernos de .NET en minutos.

IronZIP ofrece muchas ventajas en comparación con la biblioteca System.IO.Compression. Puedes especificar la relación de compresión que deseas durante la compresión y también usar diferentes algoritmos de compresión como ZIP, TAR, GZIP, BZIP2. También admite plataformas móviles, web y de escritorio y varias versiones de .NET.

// Setup: Specify the path for the new ZIP archive
var archivePath = "ironZip.zip";

// Check if the archive already exists, and delete it if so
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}

// Use IronZIP library to create a new ZIP archive
using (var archive = new IronZipArchive(9)) // Compression level: 9 for maximum compression
{
    // Add files to the ZIP archive
    archive.Add("file1.txt");
    archive.Add("file2.txt");

    // Save the archive to the specified path
    archive.SaveAs(archivePath);
}
// Setup: Specify the path for the new ZIP archive
var archivePath = "ironZip.zip";

// Check if the archive already exists, and delete it if so
if (File.Exists(archivePath))
{
    File.Delete(archivePath);
}

// Use IronZIP library to create a new ZIP archive
using (var archive = new IronZipArchive(9)) // Compression level: 9 for maximum compression
{
    // Add files to the ZIP archive
    archive.Add("file1.txt");
    archive.Add("file2.txt");

    // Save the archive to the specified path
    archive.SaveAs(archivePath);
}
' Setup: Specify the path for the new ZIP archive
Dim archivePath = "ironZip.zip"

' Check if the archive already exists, and delete it if so
If File.Exists(archivePath) Then
	File.Delete(archivePath)
End If

' Use IronZIP library to create a new ZIP archive
Using archive = New IronZipArchive(9) ' Compression level: 9 for maximum compression
	' Add files to the ZIP archive
	archive.Add("file1.txt")
	archive.Add("file2.txt")

	' Save the archive to the specified path
	archive.SaveAs(archivePath)
End Using
$vbLabelText   $csharpLabel

El código fuente inicial se configura especificando el nombre del archivo de archivo ZIP y comprobando si el directorio especificado existe. Luego archivamos los archivos para crear un archivo ZIP usando el método Add. El segundo parámetro en el parámetro de compresión es 1 para menor y 9 para mayor. Los archivos de texto se pueden comprimir al máximo usando 9 sin pérdida, y los archivos de imagen pueden usar una compresión más baja para evitar la pérdida de datos.

Abra el archivo ZIP usando IronZIP

La clase IronArchive también se puede usar para extraer los archivos del archivo de archivo ZIP. Todos los archivos son extraídos usando IronArchive.ExtractArchiveToDirectory, lo que ayuda a extraer todos los archivos a directorios específicos como se muestra a continuación.

// Directory to extract all files from the ZIP archive
var extractionPath = "IronZipFiles";

// Check if the directory exists; if not, create it
if (!Directory.Exists(extractionPath))
{
    Directory.CreateDirectory(extractionPath);
}

// Extract all files from the specified ZIP archive to the directory
IronArchive.ExtractArchiveToDirectory("ironZip.zip", extractionPath);
// Directory to extract all files from the ZIP archive
var extractionPath = "IronZipFiles";

// Check if the directory exists; if not, create it
if (!Directory.Exists(extractionPath))
{
    Directory.CreateDirectory(extractionPath);
}

// Extract all files from the specified ZIP archive to the directory
IronArchive.ExtractArchiveToDirectory("ironZip.zip", extractionPath);
' Directory to extract all files from the ZIP archive
Dim extractionPath = "IronZipFiles"

' Check if the directory exists; if not, create it
If Not Directory.Exists(extractionPath) Then
	Directory.CreateDirectory(extractionPath)
End If

' Extract all files from the specified ZIP archive to the directory
IronArchive.ExtractArchiveToDirectory("ironZip.zip", extractionPath)
$vbLabelText   $csharpLabel

El código anterior extrae archivos ZIP a un directorio. El código verifica si existe el directorio, y si no, el archivo de archivo ZIP se extrae al directorio especificado.

Licencia (Prueba gratuita disponible)

Para que funcione el código anterior, se requiere una clave de licencia. Esta clave necesita ser ubicada en appsettings.json.

{
    "IronZip.LicenseKey": "your license key"
}

Una licencia de prueba está disponible para los desarrolladores tras registrarse aquí, y sí, no se requiere tarjeta de crédito para una licencia de prueba. Proporciona el ID de correo y regístrate para una prueba gratuita.

Agregar archivos a un archivo ZIP existente

Usa el método estático FromFile de IronZIP para abrir un archivo existente. Este método también requiere especificar el nombre del archivo del nuevo archivo que se creará como salida.

// Path to a new file to be added to the existing ZIP archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";

// Open the existing ZIP archive and add a new file
using (var file = IronArchive.FromFile("ironZip.zip", archivePlusPath))
{
    // Add additional files to the existing archive
    file.Add(file3);
}
// Path to a new file to be added to the existing ZIP archive
const string file3 = ".\\image3.png";
var archivePlusPath = "ironZipPlus.zip";

// Open the existing ZIP archive and add a new file
using (var file = IronArchive.FromFile("ironZip.zip", archivePlusPath))
{
    // Add additional files to the existing archive
    file.Add(file3);
}
' Path to a new file to be added to the existing ZIP archive
Const file3 As String = ".\image3.png"
Dim archivePlusPath = "ironZipPlus.zip"

' Open the existing ZIP archive and add a new file
Using file = IronArchive.FromFile("ironZip.zip", archivePlusPath)
	' Add additional files to the existing archive
	file.Add(file3)
End Using
$vbLabelText   $csharpLabel

El código utiliza el método estático IronArchive.FromFile para abrir el archivo ZIP existente y luego agregar el nuevo archivo como una entrada de archivo. Una vez que el objeto de archivo se desecha, el archivo actualizado se guarda exitosamente.

Actualizaciones

La biblioteca IronZIP se actualiza constantemente basándose en comentarios de clientes/usuarios, y todas las actualizaciones se pueden encontrar aquí.

Conclusión

En conclusión, la programación de archivos ZIP es una habilidad esencial para construir en el desarrollo de aplicaciones modernas donde los costos de almacenamiento y transferencia de datos son cargados por los proveedores de alojamiento en la nube. Conocer esta habilidad puede ayudar a los programadores a reducir el costo de la aplicación y mejorar el rendimiento de la aplicación.

Siguiendo los pasos de instalación y explorando los ejemplos de código proporcionados, los desarrolladores pueden aprovechar rápidamente el poder de IronZIP para manejar tareas ZIP con facilidad. A medida que más y más aplicaciones son modernizadas y trasladadas a la nube, tener una biblioteca ZIP confiable como IronZIP equipa a los desarrolladores de C# con las herramientas necesarias para cumplir con las demandas del desarrollo de aplicaciones modernas. Así que, aprovecha el poder de IronZIP y desbloquea nuevas posibilidades para trabajar con archivos ZIP en tus aplicaciones C#.

IronZIP ofrece un amplio soporte para sus desarrolladores. Para saber más sobre cómo funciona IronZIP para C# visita aquí. IronZIP ofrece una licencia de prueba gratuita, que es una gran oportunidad para conocer IronZIP y sus características.

Iron Software tiene varias otras bibliotecas, explóralas para obtener más conocimientos y actualizar tus habilidades para programar/desarrollar aplicaciones modernas.

Preguntas Frecuentes

¿Cómo abro un archivo ZIP en C#?

Puedes abrir un archivo ZIP en C# usando la biblioteca System.IO.Compression. Alternativamente, IronZIP proporciona funcionalidades avanzadas para manejar archivos ZIP, ofreciendo una forma más fácil y eficiente de gestionar tus archivos.

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

Con IronZIP, puedes extraer archivos de un archivo ZIP usando el método IronArchive.ExtractArchiveToDirectory. Este método requiere que especifiques el archivo ZIP y el directorio de destino para la extracción.

¿Cuáles son los beneficios de usar archivos ZIP en el desarrollo de aplicaciones?

Los archivos ZIP reducen el tamaño de los archivos, lo que lleva a tiempos de transferencia más rápidos y la capacidad de consolidar múltiples archivos en un solo archivo. IronZIP mejora estos beneficios con funciones adicionales como especificar relaciones de compresión y soportar múltiples formatos.

¿Cómo añado archivos a un archivo ZIP existente en C#?

Para añadir archivos a un archivo ZIP existente usando IronZIP, utiliza el método IronArchive.FromFile para abrir el archivo y luego usa el método Add para incluir nuevos archivos. Guarda el archivo actualizado para completar el proceso.

¿Puedo crear un nuevo archivo ZIP y añadir archivos a él usando IronZIP?

Sí, con IronZIP, puedes crear un nuevo archivo ZIP especificando la ruta del archivo y añadiendo archivos usando el método Add. El archivo se guarda luego usando el método SaveAs.

¿Cómo puedo instalar IronZIP usando el Administrador de Paquetes NuGet?

Para instalar IronZIP a través del Administrador de Paquetes NuGet, abre el Administrador de Proyectos en Visual Studio, busca IronZIP, selecciona la última versión y haz clic en Instalar. Esto añadirá IronZIP a tu proyecto, habilitando la gestión de archivos ZIP.

¿IronZIP soporta múltiples formatos de compresión?

Sí, IronZIP soporta múltiples formatos de compresión, incluidos ZIP, TAR, GZIP y BZIP2, ofreciendo flexibilidad para diversas necesidades de aplicación.

¿Hay una prueba gratuita disponible para IronZIP?

Sí, IronZIP ofrece una prueba gratuita para desarrolladores. Puedes registrarte en el sitio web de Iron Software para acceder a la prueba sin necesidad de una tarjeta de crédito.

¿Qué hace de IronZIP una opción adecuada para el desarrollo de aplicaciones modernas?

IronZIP es conocido por su facilidad de uso, velocidad y compatibilidad multiplataforma. Estas características, junto con sus funcionalidades avanzadas, lo hacen una opción ideal para el desarrollo de aplicaciones modernas.

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