Работа с архивами 7z
Обзор
7-Zip — файловый архиватор с высокой степенью сжатия. API Aspose.ZIP позволяет создавать и управлять архивами 7-Zip в ваших приложениях без необходимости использования каких-либо других сторонних приложений. API Aspose.ZIP предоставляет класс SevenZipArchive для работы с архивами 7-Zip. Этот класс предоставляет различные методы для выполнения операций с архивами. API предоставляет класс SevenZipArchiveEntry для представления одного файла в архиве 7z.
Создайте единую запись в формате 7-Zip
В следующем примере кода показано, как создать запись 7-Zip с помощью экземпляра 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 }
Создание записей архива 7-Zip
Класс SevenZipArchive предоставляет методы CreateEntries для рекурсивного добавления файлов и каталогов в заданный каталог. В следующем примере кода показано, как создавать записи архива 7-Zip.
1 using (SevenZipArchive archive = new SevenZipArchive())
2 {
3 archive.CreateEntries(dataDir);
4 archive.Save("SevenZip.7z");
5 }
Настройки шифрования 7-Zip
API Aspose.ZIP предоставляет класс SevenZipAESEncryptionSettings, который предоставляет настройки для шифрования или дешифрования AES для архивов 7z. В следующем примере кода показано, как предоставить параметры шифрования 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 }
AES-256 — единственный возможный метод шифрования архива 7z.
Архив 7-Zip со сжатием LZMA
В следующем примере кода показано, как создать архив 7z со сжатием LZMA и шифрованием AES.
Шаги: Создать Архив 7z со сжатием LZMA и шифрованием AES через C#
- Откройте поток файлов для выходного архива 7z с помощью FileMode.Create.
- Создайте экземпляр класса SevenZipArchive.
- С помощью метода CreateEntry добавьте запись в архив, указав:
- Файл, который нужно сжать. — Настройки сжатия LZMA с использованием SevenZipLZMACompressionSettings.
- Настройки шифрования AES с помощью SevenZipAESEncryptionSettings (с паролем).
- Сохраните архив, используя метод Save, чтобы записать в файл сжатые и зашифрованные данные.
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 }
Аналогичным образом вы можете составить архив 7z с методами сжатия BZip2, PPMd и LZMA2 или хранить файлы без сжатия.
Установка другого пароля для записей
В следующем примере кода показано, как создать архив с записями, зашифрованными разными паролями для каждой записи.
Шаги: Создать Архив 7z со сжатием LZMA и шифрованием AES через C#
- Откройте поток файлов, чтобы создать архив 7z, используя FileMode.Create.
- Подготовьте файлы (объекты FileInfo), которые вы хотите добавить в качестве записей в архив.
- Создайте экземпляр класса SevenZipArchive.
- Для каждой записи используйте метод CreateEntry, чтобы добавить файл в архив:
— Укажите метод сжатия (в данном случае SevenZipStoreCompressionSettings).
- Установите разные пароли для каждой записи с помощью SevenZipAESEncryptionSettings.
- Сохраните архив, используя метод Save для записи зашифрованных записей в файл.
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 }
Извлечение архивов 7z
Now Aspose.ZIP can extract LZMA, LZMA2, BZip2 and PPMd compressed archives.
В следующем примере кода показано, как извлечь архив 7z в каталог.
1 using (SevenZipArchive archive = new SevenZipArchive("archive.7z"))
2 {
3 archive.ExtractToDirectory("ExtractionFolder");
4 }