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:
- Cree un archivo 7z (7-Zip) usando C#
- Cree un archivo 7z cifrado con AES usando C#
- Establezca diferentes contraseñas para entradas 7z usando C#
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:
- Instale usando NuGet Package Manager.
- Descargar DLL and add its reference to the project.
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.
- Abra un nuevo FileStream para crear un archivo 7z.
- Cree una instancia de la clase SevenZipArchive.
- Agregue el archivo al archivo utilizando el método SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings).
- Cree y guarde el archivo usando el método SevenZipArchive.Save(Stream).
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.
- Cree una instancia de la clase SevenZipArchive.
- Pase la ruta de la carpeta al método SevenZipArchive.CreateEntries(String, Boolean).
- Llame al método SevenZipArchive.Save(String).
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.
- Cree un nuevo FileStream para el archivo de almacenamiento 7z.
- Acceda a cada entrada de archivo usando la clase FileInfo.
- Cree una instancia de la clase SevenZipArchive.
- Cree una entrada en el archivo 7z usando SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Guarde el archivo usando el método SevenZipArchive.Save(Stream).
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í.