Crear archivo 7Zip en C#

En la publicación anterior, he discutido diferentes formas de crear archivos ZIP usando C#. El artículo también cubrió cómo crear archivos ZIP encriptados y protegidos con contraseña. Además del formato ZIP, existen otros formatos de archivo de uso común como 7z, tar, RAR, etc. Entre estos, el formato de archivo 7z se basa en una arquitectura de código abierto. y se utiliza para comprimir archivos y carpetas con un alto índice de compresión. También es compatible con el cifrado AES de 256 bits y también permite cifrar los nombres de los archivos. En este artículo, demostraré cómo crear archivos 7z (7-Zip) mediante programación usando C#.

Este artículo se divide en las siguientes secciones:

Todos los pasos y ejemplos de código de este artículo se basan en Aspose.ZIP for .NET. Por lo tanto, asegúrese de haber instalado la API usando cualquiera de los siguientes métodos:

Cree un archivo 7z (7-Zip) usando C#

Podría haber dos escenarios posibles de comprimir archivos en un archivo 7z. O tiene un solo archivo o podría haber un montón de archivos para comprimir. Puede tratar ambos escenarios explícitamente.

Crear archivo 7z con entrada única

Los siguientes son los pasos para crear un archivo 7z con una sola entrada.

El siguiente ejemplo de código muestra cómo crear un archivo 7z (7-Zip) con C#.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("data.bin", "file.dat");
        archive.Save(sevenZipFile);
    }
}

Crear archivo 7z con múltiples entradas

En este caso, puede colocar los archivos en una carpeta y pasar la ruta de la carpeta al método SevenZipArchive.CreateEntries(). Los siguientes son pasos para agregar múltiples entradas de archivos a un archivo 7z.

El siguiente ejemplo de código muestra cómo crear un archivo 7z con varias entradas mediante C#.

using (SevenZipArchive archive = new SevenZipArchive())
{
    archive.CreateEntries(dataDir);
    archive.Save("SevenZip.7z");
}

Cree un archivo 7z cifrado con AES usando C#

El formato 7z admite el cifrado AES para proteger los archivos. Para cifrar un archivo 7z, se utiliza la clase SevenZipAESEncryptionSettings. El siguiente ejemplo de código muestra cómo crear un archivo 7z cifrado con AES mediante C#.

using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
{
    archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
    archive.Save("archive.7z");
}

Establezca diferentes contraseñas para entradas 7z usando C#

El formato 7z también le permite especificar una contraseña diferente para cada entrada de archivo. Por ejemplo, si va a comprimir dos archivos en un archivo 7z, puede especificar una contraseña diferente para cada archivo. Los siguientes son los pasos para establecer diferentes contraseñas para las entradas 7z.

El siguiente ejemplo de código muestra cómo establecer una contraseña para cada entrada en un archivo 7z.

using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
{
    FileInfo fi1 = new FileInfo("data1.bin");
    FileInfo fi2 = new FileInfo("data2.bin");
    FileInfo fi3 = new FileInfo("data3.bin");
    using (var archive = new SevenZipArchive())
    {
        archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
        archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
        archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
        archive.Save(sevenZipFile);
    }
}

Conclusión

En este artículo, hemos aprendido cómo crear archivos 7z mediante programación usando C#. Además, hemos visto cómo crear archivos 7z cifrados con AES y establecer una contraseña para cada entrada de archivo. Puede obtener más información sobre la compresión/descompresión de archivos desde aquí.

Artículos relacionados