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
- Kroki do utworzenia płaskiego archiwum ZIP
- Uzyskaj bezpłatną licencję API
- Podsumowanie
- Zobacz także
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#:
- Załaduj rodzica ZIP: Użyj klasy Archive, aby załadować rodzica ZIP.
- Zainicjalizuj listy: Utwórz listy do przechowywania:
- Wpisów do usunięcia z rodzica ZIP
- Wyodrębnionych wpisów i ich nazw
- Iteruj przez wpisy archiwum: Pętla przez każdy ArchiveEntry w rodzicu ZIP, używając kolekcji Archive.Entries.
- 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ącArchiveEntry.Open().CopyTo(MemoryStream)
. - Dodaj wpis do listy wpisów do dodania do rodzica ZIP.
- Sprawdź, czy wpis jest archiwum ZIP, używając
- 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).
- 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).
- 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.