Создать архив 7Zip на C#

В предыдущем посте я обсуждал различные способы создания архивов ZIP с помощью C#. В статье также рассказывается, как создавать зашифрованные и защищенные паролем ZIP-архивы. Помимо формата ZIP, существуют другие часто используемые форматы архивов, такие как 7z, tar, RAR и т. д. Среди них формат архива 7z основан на архитектуре с открытым исходным кодом. и он используется для сжатия файлов и папок с высокой степенью сжатия. Он также поддерживает 256-битное шифрование AES и позволяет также шифровать имена файлов. В этой статье я покажу, как программно создавать архивы 7z (7-Zip) с помощью C#.

Эта статья разделена на следующие разделы:

Все шаги и примеры кода в этой статье основаны на Aspose.ZIP for .NET. Поэтому убедитесь, что вы установили API одним из следующих способов:

Создайте архив 7z (7-Zip) с помощью C#

Возможны два сценария сжатия файлов в архив 7z. Либо у вас есть только один файл, либо может быть несколько файлов, которые нужно сжать. Вы можете работать с обоими сценариями явно.

Создать архив 7z с одной записью

Ниже приведены шаги для создания архива 7z с одной записью.

В следующем примере кода показано, как создать архив 7z (7-Zip) с помощью C#.

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

Создать архив 7z с несколькими записями

В этом случае вы можете поместить файлы в папку и передать путь к папке методу SevenZipArchive.CreateEntries(). Ниже приведены шаги для добавления нескольких файловых записей в архив 7z.

В следующем примере кода показано, как создать архив 7z с несколькими записями с помощью C#.

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

Создайте зашифрованный AES архив 7z с помощью C#

Формат 7z поддерживает шифрование AES для защиты файлов. Для шифрования файла 7z используется класс SevenZipAESEncryptionSettings. В следующем примере кода показано, как создать архив 7z с шифрованием AES с помощью 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");
}

Установите разные пароли для записей 7z с помощью С#

Формат 7z также позволяет указывать разные пароли для каждой записи файла. Например, если вы собираетесь сжать два файла в архиве 7z, вы можете указать разные пароли для каждого файла. Ниже приведены шаги по установке разных паролей для записей 7z.

В следующем примере кода показано, как установить пароль для каждой записи в архиве 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);
    }
}

Вывод

В этой статье мы узнали, как программно создавать архивы 7z с помощью C#. Кроме того, мы увидели, как создавать файлы 7z с шифрованием AES и устанавливать пароль для каждой записи файла. Вы можете узнать больше о сжатии/распаковке файлов здесь.

Статьи по Теме