Utwórz Płaski Archiwum ZIP w C#

Podczas pracy z archiwami ZIP możesz napotkać scenariusz, w którym plik ZIP zawiera inne pliki ZIP, tworząc zagnieżdżoną strukturę. Jeśli chcesz uprościć to, wyodrębniając wszystkie wewnętrzne archiwa ZIP do zewnętrznego archiwum, jesteś we właściwym miejscu. W tym artykule zbadamy jak utworzyć płaskie archiwum ZIP w C# za pomocą potężnej biblioteki Aspose.ZIP dla .NET.

Spis Treści

Przegląd API .NET do tworzenia płaskich archiwów ZIP

Aby utworzyć płaskie archiwa ZIP, wykorzystamy bibliotekę Aspose.ZIP dla .NET. To solidne API archiwizacyjne pozwala na tworzenie i wyodrębnianie różnych formatów archiwów, w tym ZIP, TAR, GZip i 7z. Możesz łatwo zainstalować tę bibliotekę z NuGet lub pobrać jej DLL z sekcji pobierania.

PM> Install-Package Aspose.Zip

Kroki do utworzenia płaskiego archiwum ZIP w C#

Aby lepiej zrozumieć strukturę płaskiego archiwum ZIP, rozważ następujący przykład. Początkowo mamy archiwum ZIP zawierające inne archiwum ZIP:

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

Po przekształceniu tego archiwum ZIP w płaską strukturę, wszystkie wpisy z wewnętrznego ZIP zostaną wyodrębnione do rodzica ZIP, prowadząc do następującej struktury:

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

Kroki implementacji

Oto jak programowo utworzyć płaskie archiwum ZIP w C#:

  1. Załaduj rodzica ZIP: Użyj klasy Archive, aby załadować rodzica ZIP.
  2. Zainicjalizuj listy: Utwórz listy do przechowywania:
    • Wpisów do usunięcia z rodzica ZIP
    • Wyodrębnionych wpisów i ich nazw
  3. Iteruj przez wpisy archiwum: Pętla przez każdy ArchiveEntry w rodzicu ZIP, używając kolekcji Archive.Entries.
  4. Przetwórz każdy wpis:
    • Sprawdź, czy wpis jest archiwum ZIP, używając ArchiveEntry.Name.EndsWith(".zip", StringComparison.InvariantCultureIgnoreCase).
    • Jeśli tak, dodaj go do listy wpisów do usunięcia.
    • Otwórz wpis w obiekcie MemoryStream używając ArchiveEntry.Open().CopyTo(MemoryStream).
    • Iteruj przez wpisy wewnętrznego archiwum ZIP, wykonując następujące:
      • Dodaj nazwę każdego wpisu do listy wpisów do dodania.
      • Załaduj każdy wpis do MemoryStream używając ArchiveEntry.Open().CopyTo(MemoryStream).
      • Dodaj wpis do listy wpisów do dodania do rodzica ZIP.
  5. Usuń wewnętrzne wpisy ZIP: Pętla przez listę wewnętrznych archiwów ZIP i usuń każdy wpis używając metody Archive.DeleteEntry(ArchiveEntry).
  6. Dodaj nowe wpisy do rodzica ZIP: Pętla przez listę wpisów do dodania i uwzględnij każdy wpis używając metody Archive.CreateEntry(String, Stream).
  7. Zapisz rodzica ZIP: Na koniec zapisz zmodyfikowane archiwum ZIP rodzica używając metody Archive.Save(String).

Oto przykład kodu pokazujący, jak utworzyć płaskie archiwum ZIP w C#:

Uzyskaj bezpłatną licencję API

Możesz uzyskać bezpłatną tymczasową licencję do używania Aspose.ZIP dla .NET bez jakichkolwiek ograniczeń oceny.

Podsumowanie

W tym samouczku nauczyłeś się, jak skutecznie utworzyć płaskie archiwum ZIP używając C#. Zademonstrowaliśmy proces wyodrębniania wewnętrznych archiwów ZIP do rodzica ZIP, skutecznie unikając zagnieżdżonych folderów. Aby uzyskać więcej informacji, zapraszamy do zapoznania się z dokumentacją Aspose.ZIP dla .NET, lub skontaktuj się z nami za pośrednictwem naszego forum.

Zobacz także