Ми часто стикаємося зі сценарієм, коли кілька архівів ZIP інкапсульовано в інший ZIP. У таких випадках спочатку потрібно розпакувати батьківський архів ZIP, а потім один за одним вкладені архіви. Щоб полегшити вам роботу, у цій статті ми продемонструємо, як розпакувати вкладені архіви ZIP у C# .NET без написання складного коду.
C# .NET API для вилучення вкладених ZIP-архівів
Щоб розархівувати вкладені ZIP-архіви, ми використаємо Aspose.ZIP for .NET. API призначений для виконання операцій архівування з програм .NET. Це дозволяє безперешкодно створювати популярні формати архівів і працювати з ними. Ви можете завантажити DLL API або встановити його за допомогою NuGet.
PM> Install-Package Aspose.Zip
Розпакуйте вкладені архіви ZIP у C#
Щоб продемонструвати видобування вкладених ZIP-архівів, ми створили наступний ZIP-файл, який містить 3 записи.
Ми розпакуємо кожен вкладений ZIP-архів і збережемо його вміст в окремій папці. Нижче наведено кроки для вилучення вкладених ZIP-архівів у C#.
- Спочатку створіть об’єкт FileStream, щоб завантажити файл ZIP.
- Потім завантажте ZIP-файл за допомогою класу Архів.
- Перегляньте кожен ArchiveEntry у колекції Archive.Entries.
- Відфільтруйте ZIP-архіви в колекції та для кожного архіву виконайте такі дії:
- Створіть об’єкт MemoryStream і скопіюйте в нього запис архіву за допомогою методу ArchiveEntry.Open().CopyTo(Stream).
- Створіть екземпляр класу Archive, щоб завантажити вкладений архів.
- Нарешті, розпакуйте архів у папку за допомогою методу Archive.ExtractToDirectory(string).
У наведеному нижче прикладі коду показано, як розпакувати вкладені ZIP-архіви в C# .NET.
// Відкрити ZIP-файл у файловому потоці
using (FileStream zipFile = File.Open("Archives/nested-archive.zip", FileMode.Open))
{
// Завантажте ZIP-файл за допомогою класу Archive
using (Archive archive = new Archive(zipFile, new ArchiveLoadOptions()))
{
// Доступ до кожного запису в архіві ZIP
foreach(ArchiveEntry entry in archive.Entries)
{
if(entry.Name.ToLower().Contains(".zip"))
{
// Створити потік пам'яті для вкладеного архіву
MemoryStream nestedArchiveStream = new MemoryStream();
// Копіювати архів у потік пам'яті
entry.Open().CopyTo(nestedArchiveStream);
// Завантажити вкладений архів із потоку пам’яті
using (var nestedArchive = new Archive(nestedArchiveStream))
{
// Розпакуйте архів на диск.
nestedArchive.ExtractToDirectory("Archives/Extracted/"+entry.Name);
}
}
}
}
}
Нижче наведено знімок екрана витягнутих ZIP-архівів.
Отримайте безкоштовну ліцензію API
Ви можете отримати безкоштовну тимчасову ліцензію на використання Aspose.ZIP for .NET без обмежень щодо оцінювання.
Висновок
У цій статті ви дізналися, як видобувати вкладені архіви ZIP у C#. У покроковому посібнику та прикладі коду показано, як розархівувати кожен вкладений архів в окрему папку. Крім того, ви можете відвідати документацію, щоб дослідити інші функції Aspose.ZIP for .NET. Ви також можете поставити свої запитання через наш форум.