Работа с архивами 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#

  1. Откройте поток файлов для выходного архива 7z с помощью FileMode.Create.
  2. Создайте экземпляр класса SevenZipArchive.
  3. С помощью метода CreateEntry добавьте запись в архив, указав:
    • Файл, который нужно сжать. — Настройки сжатия LZMA с использованием SevenZipLZMACompressionSettings.
    • Настройки шифрования AES с помощью SevenZipAESEncryptionSettings (с паролем).
  4. Сохраните архив, используя метод 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#

  1. Откройте поток файлов, чтобы создать архив 7z, используя FileMode.Create.
  2. Подготовьте файлы (объекты FileInfo), которые вы хотите добавить в качестве записей в архив.
  3. Создайте экземпляр класса SevenZipArchive.
  4. Для каждой записи используйте метод CreateEntry, чтобы добавить файл в архив: — Укажите метод сжатия (в данном случае SevenZipStoreCompressionSettings).
    • Установите разные пароли для каждой записи с помощью SevenZipAESEncryptionSettings.
  5. Сохраните архив, используя метод 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    }

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.