
Коли ви працюєте з ZIP архівами, ви можете зіткнутися з ситуацією, коли ZIP файл містить інші ZIP файли, що призводить до вкладеної структури. Якщо ваша мета — спростити це, витягуючи всі внутрішні ZIP архіви в зовнішній архів, ви потрапили в правильне місце. У цій статті ми розглянемо, як створити плоский ZIP архів в C# за допомогою потужного Aspose.ZIP для .NET.
Зміст
- Огляд .NET API для створення плоских ZIP архівів
- Кроки для створення плоского ZIP архіву
- Отримати безкоштовну ліцензію API
- Висновок
- Дивіться також
Огляд .NET API для створення плоских ZIP архівів
Для створення плоских ZIP архівів ми будемо використовувати бібліотеку Aspose.ZIP для .NET. Цей потужний API архівування дозволяє створювати та витягувати різні формати архівів, включаючи ZIP, TAR, GZip та 7z. Ви можете легко встановити цю бібліотеку з NuGet або завантажити її DLL з розділу завантажень.
PM> Install-Package Aspose.Zip
Кроки для створення плоского ZIP архіву в C#
Щоб краще зрозуміти структуру плоского ZIP архіву, розгляньте наступний приклад. Спочатку у нас є ZIP архів, що містить інший ZIP архів:
parent.zip
├ first.txt
├ inner.zip
│ ├ game.exe
│ └ subitem.bin
└ picture.gif
Після перетворення цього ZIP архіву в плоску структуру всі елементи з внутрішнього ZIP будуть витягнуті в батьківський ZIP, що призведе до такої структури:
flatten.zip
├ first.txt
├ picture.gif
├ game.exe
└ subitem.bin
Кроки реалізації
Ось як програмно створити плоский ZIP архів в C#:
- Завантажте батьківський ZIP архів: Використовуйте клас Archive для завантаження батьківського ZIP.
- Ініціалізуйте списки: Створіть списки для зберігання:
- Записів для видалення з батьківського ZIP
- Витягнутих записів та їхніх імен
- Ітерація через записи архіву: Пройдіться через кожен ArchiveEntry у батьківському ZIP, використовуючи колекцію Archive.Entries.
- Обробка кожного запису:
- Перевірте, чи є запис ZIP архівом, використовуючи
ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase)
. - Якщо так, додайте його до списку записів для видалення.
- Відкрийте запис в об’єкті MemoryStream за допомогою
ArchiveEntry.Open().CopyTo(MemoryStream)
. - Пройдіться через записи внутрішнього ZIP архіву, виконавши наступні дії:
- Додайте ім’я кожного запису до списку записів, які потрібно додати.
- Завантажте кожен запис у
MemoryStream
, використовуючиArchiveEntry.Open().CopyTo(MemoryStream)
. - Додайте запис до списку записів, які потрібно додати до батьківського ZIP.
- Перевірте, чи є запис ZIP архівом, використовуючи
- Видалення внутрішніх ZIP записів: Пройдіться через список внутрішніх ZIP архівів і видаліть кожен запис, використовуючи метод Archive.DeleteEntry(ArchiveEntry).
- Додати нові записи до батьківського ZIP: Пройдіться через список записів для додавання і включіть кожен запис, використовуючи метод Archive.CreateEntry(String, Stream).
- Збережіть батьківський ZIP архів: Нарешті, збережіть модифікований батьківський ZIP архів, використовуючи метод Archive.Save(String).
Ось приклад коду, що демонструє, як створити плоский ZIP архів в C#:
Отримати безкоштовну ліцензію API
Ви можете отримати безкоштовну тимчасову ліцензію для використання Aspose.ZIP для .NET без будь-яких обмежень на оцінку.
Висновок
У цьому навчальному посібнику ви дізналися, як ефективно створити плоский ZIP архів за допомогою C#. Ми продемонстрували процес витягування внутрішніх ZIP архівів у батьківський ZIP, ефективно уникаючи вкладених папок. Для отримання додаткової інформації не соромтеся ознайомитися з документацією Aspose.ZIP для .NET, або зв’яжіться з нами через наш форум.
Дивіться також
- Додавання файлів або папок до ZIP архівів в C#
- Розпакування файлів у ZIP архівах за допомогою C#
- Об’єднання кількох ZIP або TAR архівів в C#
- Створення виконуваного саморозпаковуваного архіву в C#
Дотримуючись цих кроків, ви зможете легко реалізувати плоске стиснення zip файлів C# у ваших додатках, забезпечуючи один файл zip архіву, який є як ефективним, так і простим у керуванні.