В предыдущем посте я обсуждал различные способы создания архивов ZIP с помощью C#. В статье также рассказывается, как создавать зашифрованные и защищенные паролем ZIP-архивы. Помимо формата ZIP, существуют другие часто используемые форматы архивов, такие как 7z, tar, RAR и т. д. Среди них формат архива 7z основан на архитектуре с открытым исходным кодом. и он используется для сжатия файлов и папок с высокой степенью сжатия. Он также поддерживает 256-битное шифрование AES и позволяет также шифровать имена файлов. В этой статье я покажу, как программно создавать архивы 7z (7-Zip) с помощью C#.
Эта статья разделена на следующие разделы:
- Создайте архив 7z (7-Zip) с помощью C#
- Создайте зашифрованный AES архив 7z с помощью C#
- Установите разные пароли для записей 7z с помощью С#
Все шаги и примеры кода в этой статье основаны на Aspose.ZIP for .NET. Поэтому убедитесь, что вы установили API одним из следующих способов:
- Установите с помощью Диспетчер пакетов NuGet.
- Скачать 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 с помощью С#
Формат 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 и устанавливать пароль для каждой записи файла. Вы можете узнать больше о сжатии/распаковке файлов здесь.