Робота з архівами 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#
- Відкрийте потік файлів для вихідного архіву 7z за допомогою FileMode.Create.
- Створіть екземпляр класу SevenZipArchive.
- Використовуйте метод CreateEntry, щоб додати запис до архіву, вказавши:
- Файл, який потрібно стиснути. — Налаштування стиснення LZMA за допомогою SevenZipLZMACompressionSettings.
- Параметри шифрування AES за допомогою SevenZipAESEncryptionSettings (з паролем).
- Збережіть архів за допомогою методу 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#
- Відкрийте потік файлів, щоб створити архів 7z за допомогою FileMode.Create.
- Підготуйте файли (об’єкти FileInfo), які потрібно додати як записи до архіву.
- Створіть екземпляр класу SevenZipArchive.
- Для кожного запису використовуйте метод CreateEntry, щоб додати файл до архіву:
- Вкажіть метод стиснення (в даному випадку SevenZipStoreCompressionSettings).
- Встановіть інший пароль для кожного запису за допомогою SevenZipAESEncryptionSettings.
- Збережіть архів за допомогою методу 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 }