Створення архіву 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 за допомогою C#

Формат 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 і встановлювати пароль для кожного запису файлу. Ви можете дізнатися більше про стиснення/декомпресію файлів тут.

Схожі статті