AYUDA .NET

SevenZip C# (Cómo funciona para desarrolladores)

Actualizado 24 de diciembre, 2023
Compartir:

Introducción

En el ámbito de las utilidades de compresión y archivado de entradas de archivos, 7-Zip destaca como una solución versátil y de código abierto. Conocido por sus altos índices de compresión y su compatibilidad con varios formatos de archivo, SevenZip se ha convertido en una opción muy popular entre los usuarios que buscan una gestión eficaz de los archivos. En este artículo, exploraremos qué es 7-Zip, cómo funciona, sus principales características, el formato único 7z, los ratios de compresión y su SDK .NET para C# que ayuda a crear archivos 7z. Además, presentaremos IronZIP como solución alternativa en el ecosistema .NET.

¿Qué es SevenZip?

SevenZip o 7-Zip es un archivador de archivos gratuito y de código abierto que permite comprimir y descomprimir archivos. Desarrollado por Igor Pavlov, 7-Zip admite una amplia gama de formatos de compresión, lo que lo convierte en una herramienta versátil para gestionar y organizar datos.

Sevenzip C# (Cómo funciona para desarrolladores) Figura 1 - 7-Zip

Características principales

  • **Una de las características clave de 7-Zip es su capacidad para alcanzar altos ratios de compresión, a menudo superando a otras herramientas de archivado. Esto puede suponer un importante ahorro de espacio de almacenamiento y una mayor rapidez en la transferencia de archivos a una carpeta.
  • Amplio soporte de formatos: 7-Zip puede manejar una gran variedad de formatos de archivo, incluyendo 7z, ZIP, TAR, GZIP, y más. Esta versatilidad garantiza la compatibilidad con distintos sistemas operativos y programas informáticos.
  • Encriptación y seguridad: 7-Zip proporciona sólidas capacidades de encriptación, permitiendo a los usuarios proteger sus archivos con encriptación AES-256. Esto garantiza que los datos sensibles permanezcan protegidos.
  • Soporte de línea de comandos: Además de su interfaz gráfica de fácil uso, 7-Zip ofrece una versión de línea de comandos para los usuarios que prefieren la automatización y las secuencias de comandos en sus tareas de gestión de archivos.

Cómo funciona

7-Zip utiliza algoritmos de compresión avanzados para reducir el tamaño de archivos y carpetas. Emplea el algoritmo LZMA (Algoritmo de cadena de Lempel-Ziv-Markov) para su formato nativo 7z, lo que contribuye a sus impresionantes ratios de compresión. La utilidad también admite otros formatos comunes como ZIP, TAR y GZIP.

Formato 7z

El formato 7z es el formato propietario utilizado por 7-Zip para sus archivos. Emplea el algoritmo de compresión LZMA, conocido por sus excelentes ratios de compresión. El formato 7z admite funciones como compresión sólida, división de archivos y archivos autoextraíbles.

Relación de compresión

7-Zip es famoso por sus extraordinarios ratios de compresión, especialmente cuando se utiliza el formato 7z con el algoritmo LZMA. Esta eficacia permite reducir el tamaño de los archivos comprimidos sin comprometer su integridad. Los archivos creados con 7-Zip se comprimen un 30-70% mejor que con el formato ZIP normal.

7-Zip LZMA SDK para C#

Para los desarrolladores que trabajan en C#, 7-Zip proporciona un SDK .NET que permite una integración perfecta de la funcionalidad de 7-Zip en aplicaciones personalizadas. El SDK permite a los desarrolladores realizar operaciones de compresión y descompresión mediante programación, lo que proporciona flexibilidad en la gestión de ficheros archivados dentro de proyectos C#.

Si desea utilizar 7-Zip en una aplicación C#, puede hacer uso del SDK de 7-Zip o utilizar el ejecutable de línea de comandos en su código C#. He aquí un breve resumen de ambos enfoques

1. 7-Zip SDK (7z.dll)

El SDK de 7-Zip incluye la biblioteca 7z.dll, que puede utilizar en su proyecto C#. Este enfoque permite realizar operaciones de compresión y descompresión mediante programación.

Aquí está el ejemplo de código fuente utilizando el SDK de 7-Zip:

using SevenZip;
class Program
{
    static void Main()
    {
        //  Especifique la ruta a la biblioteca 7z.dll
        SevenZipBase.SetLibraryPath("path_to_7z.dll");
        //  Crear una instancia de SevenZipExtractor o SevenZipCompressor
        //  Realizar operaciones de compresión o descompresión según sea necesario
        //  Ejemplo: Extraer ficheros de un archivo
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }
        //  Ejemplo: Comprimir ficheros en un archivo
        using (var compressor = new SevenZipCompressor())
        {
        //  Añadir entrada de archivo
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
using SevenZip;
class Program
{
    static void Main()
    {
        //  Especifique la ruta a la biblioteca 7z.dll
        SevenZipBase.SetLibraryPath("path_to_7z.dll");
        //  Crear una instancia de SevenZipExtractor o SevenZipCompressor
        //  Realizar operaciones de compresión o descompresión según sea necesario
        //  Ejemplo: Extraer ficheros de un archivo
        using (var extractor = new SevenZipExtractor("archive.7z"))
        {
            extractor.ExtractArchive("output_directory");
        }
        //  Ejemplo: Comprimir ficheros en un archivo
        using (var compressor = new SevenZipCompressor())
        {
        //  Añadir entrada de archivo
            compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt");
        }
    }
}
Imports SevenZip
Friend Class Program
	Shared Sub Main()
		'  Especifique la ruta a la biblioteca 7z.dll
		SevenZipBase.SetLibraryPath("path_to_7z.dll")
		'  Crear una instancia de SevenZipExtractor o SevenZipCompressor
		'  Realizar operaciones de compresión o descompresión según sea necesario
		'  Ejemplo: Extraer ficheros de un archivo
		Using extractor = New SevenZipExtractor("archive.7z")
			extractor.ExtractArchive("output_directory")
		End Using
		'  Ejemplo: Comprimir ficheros en un archivo
		Using compressor = New SevenZipCompressor()
		'  Añadir entrada de archivo
			compressor.CompressFiles("archive.7z", "file1.txt", "file2.txt")
		End Using
	End Sub
End Class
VB   C#

Asegúrese de sustituir "ruta_a_7z.dll" por la ruta real a la biblioteca 7z.dll. Encontrará el archivo 7z.dll en el directorio de instalación de 7-Zip.

2. Ejecutable en línea de comandos

También puede utilizar el ejecutable de línea de comandos 7-Zip (7z.exe) en su código fuente C# invocándolo a través de la clase System.Diagnostics.Process.

using System.Diagnostics;
class Program
{
    static void Main()
    {
        //  Ejemplo: Extraer ficheros de un archivo utilizando el ejecutable de línea de comandos
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
using System.Diagnostics;
class Program
{
    static void Main()
    {
        //  Ejemplo: Extraer ficheros de un archivo utilizando el ejecutable de línea de comandos
        string archivePath = "archive.7z";
        string outputPath = "output_directory";
        ProcessStartInfo processStartInfo = new ProcessStartInfo
        {
            FileName = "7z.exe",
            Arguments = $"x \"{archivePath}\" -o\"{outputPath}\"",
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
        using (Process process = new Process { StartInfo = processStartInfo })
        {
            process.Start();
            process.WaitForExit();
        }
    }
}
Imports System.Diagnostics
Friend Class Program
	Shared Sub Main()
		'  Ejemplo: Extraer ficheros de un archivo utilizando el ejecutable de línea de comandos
		Dim archivePath As String = "archive.7z"
		Dim outputPath As String = "output_directory"
		Dim processStartInfo As New ProcessStartInfo With {
			.FileName = "7z.exe",
			.Arguments = $"x ""{archivePath}"" -o""{outputPath}""",
			.RedirectStandardOutput = True,
			.UseShellExecute = False,
			.CreateNoWindow = True
		}
		Using process As New Process With {.StartInfo = processStartInfo}
			process.Start()
			process.WaitForExit()
		End Using
	End Sub
End Class
VB   C#

Asegúrese de que "7z.exe" está en el PATH de su sistema o proporcione la ruta completa al ejecutable en la propiedad FileName.

Presentación de IronZIP

Aunque 7-Zip es una solución robusta, los desarrolladores que exploran alternativas dentro del ecosistema .NET pueden encontrar en IronZIP una opción convincente. IronZIP es una biblioteca de compresión .NET que ofrece características similares a 7-Zip, proporcionando a los desarrolladores las herramientas para comprimir, descomprimir y manipular archivos dentro de sus aplicaciones C#.

Sevenzip C# (Cómo funciona para desarrolladores) Figura 2 - IronZIP

IronZIP es una potente biblioteca de archivos ZIP en C# que simplifica el trabajo con archivos ZIP en aplicaciones .NET. Gracias a su sencilla API, los desarrolladores pueden crear, leer y extraer Archivos ZIP. He aquí un sencillo fragmento de código que muestra la facilidad de uso de **Crear un archivo ZIP utilizando IronZIP:

using IronZip;
class Program
{
    static void Main()
    {
        //  Especifique la ruta para el nuevo archivo ZIP
        string zipFilePath = "output.zip";
        //  Crear un archivo ZIP vacío
        using (var archive = new IronArchive(zipFilePath))
        {
            //  Añadir archivos al ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }
        Console.WriteLine("ZIP archive created successfully!");
    }
}
using IronZip;
class Program
{
    static void Main()
    {
        //  Especifique la ruta para el nuevo archivo ZIP
        string zipFilePath = "output.zip";
        //  Crear un archivo ZIP vacío
        using (var archive = new IronArchive(zipFilePath))
        {
            //  Añadir archivos al ZIP
            archive.AddArchiveEntry("./assets/file1.txt");
            archive.AddArchiveEntry("./assets/file2.jpg");
            archive.AddArchiveEntry("./assets/file3.pdf");
        }
        Console.WriteLine("ZIP archive created successfully!");
    }
}
Imports IronZip
Friend Class Program
	Shared Sub Main()
		'  Especifique la ruta para el nuevo archivo ZIP
		Dim zipFilePath As String = "output.zip"
		'  Crear un archivo ZIP vacío
		Using archive = New IronArchive(zipFilePath)
			'  Añadir archivos al ZIP
			archive.AddArchiveEntry("./assets/file1.txt")
			archive.AddArchiveEntry("./assets/file2.jpg")
			archive.AddArchiveEntry("./assets/file3.pdf")
		End Using
		Console.WriteLine("ZIP archive created successfully!")
	End Sub
End Class
VB   C#

Para obtener más información sobre IronZIP y sus funciones o ejemplos de código, visite la página documentación página.

Conclusión

7-Zip sigue siendo una fuerza dominante en el mundo de la compresión de archivos, ofreciendo a los usuarios una solución de código abierto, rica en funciones y con unos ratios de compresión excepcionales. Su compatibilidad con varios formatos de archivo y sus potentes funciones de cifrado lo convierten en una opción versátil tanto para usuarios ocasionales como para desarrolladores. El SDK .NET amplía aún más su utilidad para los desarrolladores de C#, facilitando una integración perfecta en aplicaciones personalizadas. Para aquellos que buscan una alternativa en el espacio .NET, IronZIP destaca como un competidor digno de mención, ofreciendo una funcionalidad similar adaptada a las necesidades específicas de los desarrolladores C#.

IronZIP ofrece un prueba gratuita página. Descargue y pruebe la biblioteca IronZIP .NET Core y Framework desde aquí.

< ANTERIOR
Mailkit C# (Cómo funciona para desarrolladores)
SIGUIENTE >
ByteSize C# (Cómo funciona para desarrolladores)

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

Comenzar prueba gratuita Descargas totales: 9,661,997
Ver licencias >