Trabajar con archivos 7z
Descripción general
7-Zip es un archivador de archivos con una alta relación de compresión. La API Aspose.ZIP le permite crear y administrar archivos 7-Zip en sus aplicaciones sin la necesidad de otras aplicaciones de terceros. La API Aspose.ZIP proporciona la clase SevenZipArchive para trabajar con archivos 7-Zip. Esta clase proporciona varios métodos para realizar operaciones en archivos. La API proporciona la clase SevenZipArchiveEntry para representar un único archivo dentro del archivo 7z.
Crea una entrada única con 7 cremalleras
El siguiente ejemplo de código demuestra cómo crear una entrada 7-Zip utilizando la instancia de SevenZipArchive.
1 using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
2 {
3 using (var archive = new SevenZipArchive())
4 {
5 archive.CreateEntry("data.bin", "file.dat");
6 archive.Save(sevenZipFile);
7 }
8 }
Crear entradas de archivo 7-Zip
La clase SevenZipArchive proporciona métodos CreateEntries para agregar archivos y directorios de forma recursiva en el directorio dado. El siguiente ejemplo de código demuestra cómo crear entradas de archivo 7-Zip.
1 using (SevenZipArchive archive = new SevenZipArchive())
2 {
3 archive.CreateEntries(dataDir);
4 archive.Save("SevenZip.7z");
5 }
Configuración de cifrado 7-Zip
La API Aspose.ZIP proporciona la clase SevenZipAESEncryptionSettings que proporciona configuraciones para el cifrado o descifrado AES para archivos 7z. El siguiente ejemplo de código demuestra cómo proporcionar configuraciones de cifrado AES.
1 using (var archive = new SevenZipArchive(new SevenZipEntrySettings(null, new SevenZipAESEncryptionSettings("p@s$"))))
2 {
3 archive.CreateEntry("data.bin", new MemoryStream(new byte[] { 0x00, 0xFF }));
4 archive.Save("archive.7z");
5 }
El AES-256 es el único método de cifrado posible para el archivo 7z.
Archivo 7-Zip con compresión LZMA
El siguiente ejemplo de código demuestra cómo crear un archivo 7z con compresión LZMA y cifrado AES.
Pasos: Crear un archivo 7z con compresión LZMA y cifrado AES mediante C#
- Abra una secuencia de archivos para el archivo 7z de salida usando FileMode.Create.
- Cree una instancia de la clase SevenZipArchive.
- Utilice el método CreateEntry para agregar una entrada al archivo, especificando:
- El archivo a comprimir.
- Configuración de compresión LZMA usando SevenZipLZMACompressionSettings.
- Configuración de cifrado AES mediante SevenZipAESEncryptionSettings (con contraseña).
- Guarde el archivo utilizando el método Guardar para escribir los datos comprimidos y cifrados en el archivo.
1 using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
2 {
3 using (var archive = new SevenZipArchive())
4 {
5 archive.CreateEntry("entry1.bin",
6 new MemoryStream(new byte[] { 0x00, 0xFF }),
7 new SevenZipEntrySettings(new SevenZipLZMACompressionSettings(),
8 new SevenZipAESEncryptionSettings("test1")),
9 new FileInfo("data1.bin"));
10 archive.Save(sevenZipFile);
11 }
12 }
De manera similar, puede componer archivos 7z con el método de compresión BZip2, PPMd y LZMA2, o almacenar archivos sin compresión.
Establecer una contraseña diferente para las entradas
El siguiente ejemplo de código demuestra cómo crear un archivo con entradas cifradas con diferentes contraseñas para cada entrada.
Pasos: Crear un archivo 7z con compresión LZMA y cifrado AES mediante C#
- Abra una secuencia de archivos para crear el archivo 7z usando FileMode.Create.
- Prepare los archivos (objetos FileInfo) que desea agregar como entradas al archivo.
- Cree una instancia de la clase SevenZipArchive.
- Para cada entrada, utilice el método CreateEntry para agregar el archivo al archivo:
- Especifique el método de compresión (en este caso, SevenZipStoreCompressionSettings).
- Establezca una contraseña diferente para cada entrada usando SevenZipAESEncryptionSettings.
- Guarde el archivo utilizando el método Guardar para escribir las entradas cifradas en el archivo.
1 using (FileStream sevenZipFile = File.Open("archive.7z", FileMode.Create))
2 {
3 FileInfo fi1 = new FileInfo("data1.bin");
4 FileInfo fi2 = new FileInfo("data2.bin");
5 FileInfo fi3 = new FileInfo("data3.bin");
6 using (var archive = new SevenZipArchive())
7 {
8 archive.CreateEntry("entry1.bin", fi1, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test1")));
9 archive.CreateEntry("entry2.bin", fi2, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test2")));
10 archive.CreateEntry("entry3.bin", fi3, false, new SevenZipEntrySettings(new SevenZipStoreCompressionSettings(), new SevenZipAESEncryptionSettings("test3")));
11 archive.Save(sevenZipFile);
12 }
13 }
Extracción de archivos 7z
Now Aspose.ZIP can extract LZMA, LZMA2, BZip2 and PPMd compressed archives.
El siguiente ejemplo de código demuestra cómo extraer el archivo 7z al directorio.
1 using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
2 {
3 archive.ExtractToDirectory("ExtractionFolder");
4 }