У попередній публікації я обговорив різні способи створення архівів ZIP за допомогою C#. У статті також описано, як створити зашифровані та захищені паролем архіви ZIP. Окрім формату ZIP, існують інші широко використовувані формати архівів, як-от 7z, tar, RAR тощо. Серед них формат архіву 7z базується на архітектурі з відкритим кодом. і використовується для стиснення файлів і папок із високим ступенем стиснення. Він також підтримує 256-бітне шифрування AES і також дозволяє шифрувати імена файлів. У цій статті я покажу, як програмно створювати архіви 7z (7-Zip) за допомогою C#.
Ця стаття поділена на такі розділи:
- Створіть архів 7z (7-Zip) за допомогою C#
- Створіть зашифрований AES архів 7z за допомогою C#
- Встановіть різні паролі для записів 7z за допомогою C#
Усі кроки та приклади коду в цій статті базуються на Aspose.ZIP for .NET. Тому переконайтеся, що ви встановили API за допомогою одного з наведених нижче методів:
- Встановіть за допомогою NuGet Package Manager.
- Завантажити DLL and add its reference to the project.
Створення архіву 7z (7-Zip) за допомогою C#
Можуть бути два можливих сценарії стиснення файлів у архів 7z. Або у вас є лише один файл, або може бути купа файлів, які потрібно стиснути. Ви можете мати справу з обома сценаріями явно.
Створіть архів 7z з одним записом
Нижче наведено кроки для створення архіву 7z з одним записом.
- Відкрийте новий FileStream, щоб створити файл 7z.
- Створіть екземпляр класу SevenZipArchive.
- Додайте файл до архіву за допомогою методу SevenZipArchive.CreateEntry(String, String, Boolean, SevenZipEntrySettings).
- Створіть і збережіть архів за допомогою методу SevenZipArchive.Save(Stream).
У наведеному нижче прикладі коду показано, як створити архів 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.
- Створіть екземпляр класу SevenZipArchive.
- Передайте шлях до папки методу SevenZipArchive.CreateEntries(String, Boolean).
- Викличте метод SevenZipArchive.Save(String).
У наведеному нижче прикладі коду показано, як створити архів 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.
- Створіть новий FileStream для файлу архіву 7z.
- Отримайте доступ до кожного запису файлу за допомогою класу FileInfo.
- Створіть екземпляр класу SevenZipArchive.
- Створіть запис в архіві 7z за допомогою SevenZipArchive.CreateEntry(String, FileInfo, Boolean, SevenZipEntrySettings)
- Збережіть архів методом SevenZipArchive.Save(Stream).
У наступному прикладі коду показано, як встановити пароль для кожного запису в архіві 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 і встановлювати пароль для кожного запису файлу. Ви можете дізнатися більше про стиснення/декомпресію файлів тут.