Vytvoření plochého ZIP archivu v C#

Při práci se ZIP archivy se můžete setkat se scénářem, kdy ZIP soubor obsahuje další ZIP soubory, čímž vytváří vnořenou strukturu. Pokud chcete tento proces zjednodušit extrakcí všech vnitřních ZIP archivů do vnějšího archivu, jste na správném místě. V tomto článku prozkoumáme jak vytvořit plochý ZIP archiv v C# pomocí výkonné Aspose.ZIP pro .NET.

Obsah

Přehled .NET API pro vytváření plochých ZIP archivů

Pro vytváření plochých ZIP archivů využijeme knihovnu Aspose.ZIP pro .NET. Tento robustní archivační API vám umožňuje vytvářet a extrahovat různé formáty archivů, včetně ZIP, TAR, GZip a 7z. Tuto knihovnu si můžete snadno nainstalovat z NuGet nebo stáhnout její DLL z sekce ke stažení.

PM> Install-Package Aspose.Zip

Kroky pro vytvoření plochého ZIP archivu v C#

Abychom lépe porozuměli struktuře plochého ZIP archivu, zvažte následující příklad. Zpočátku máme ZIP archiv obsahující další ZIP archiv:

parent.zip
 ├ first.txt
 ├ inner.zip
 │ ├ game.exe
 │ └ subitem.bin
 └ picture.gif

Po transformaci tohoto ZIP archivu do ploché struktury budou všechny položky z vnitřního ZIP extrahovány do rodičovského ZIP, což povede k následující struktuře:

flatten.zip
 ├ first.txt
 ├ picture.gif
 ├ game.exe
 └ subitem.bin

Implementační kroky

Zde je, jak programově vytvořit plochý ZIP archiv v C#:

  1. Načtěte rodičovský ZIP archiv: Použijte třídu Archive k načtení rodičovského ZIP.
  2. Inicializujte seznamy: Vytvořte seznamy pro uložení:
    • Položky k odstranění z rodičovského ZIP
    • Extrahované položky a jejich názvy
  3. Procházejte položky archivu: Procházejte každou ArchiveEntry v rodičovském ZIP pomocí kolekce Archive.Entries.
  4. Zpracování každé položky:
    • Zkontrolujte, zda je položka ZIP archiv pomocí ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • Pokud ano, přidejte ji do seznamu položek k odstranění.
    • Otevřete položku do objektu MemoryStream pomocí ArchiveEntry.Open().CopyTo(MemoryStream).
    • Procházejte položkami vnitřního ZIP archivu a proveďte následující:
      • Přidejte název každé položky do seznamu položek k přidání.
      • Načtěte každou položku do MemoryStream pomocí ArchiveEntry.Open().CopyTo(MemoryStream).
      • Přidejte položku do seznamu položek k přidání do rodičovského ZIP.
  5. Odstranění vnitřních ZIP položek: Procházejte seznam vnitřních ZIP archivů a odstraňte každou položku pomocí metody Archive.DeleteEntry(ArchiveEntry).
  6. Přidání nových položek do rodičovského ZIP: Procházejte seznam položek k přidání a zahrňte každou položku pomocí metody Archive.CreateEntry(String, Stream).
  7. Uložení rodičovského ZIP archivu: Nakonec uložte upravený rodičovský ZIP archiv pomocí metody Archive.Save(String).

Zde je ukázka kódu, která demonstruje, jak vytvořit plochý ZIP archiv v C#:

Získejte bezplatnou licenci API

Můžete získat bezplatnou dočasnou licenci pro použití Aspose.ZIP pro .NET bez jakýchkoli hodnoticích omezení.

Závěr

V tomto tutoriálu jste se naučili, jak efektivně vytvořit plochý ZIP archiv pomocí C#. Ukázali jsme proces extrakce vnitřních ZIP archivů do rodičovského ZIP, čímž jsme efektivně předešli vnořeným složkám. Pro další informace se neváhejte podívat na dokumentaci Aspose.ZIP pro .NET, nebo nás kontaktujte prostřednictvím našeho fóra.

Viz také