Gibt es in .Net (C #) überhaupt die Möglichkeit, Daten aus einer Zip-Datei zu extrahieren, ohne die gesamte Datei zu dekomprimieren?
Ich möchte möglicherweise einfach Daten (Dateien) vom Anfang einer Zip-Datei extrahieren. Dies hängt natürlich davon ab, ob der Komprimierungsalgorithmus die Datei in einer deterministischen Reihenfolge komprimiert.
c#
compression
zip
data-compression
AwkwardCoder
quelle
quelle
Antworten:
DotNetZip ist dein Freund hier.
So leicht wie:
(Sie können auch in eine Datei oder andere Ziele extrahieren).
Das Lesen des Inhaltsverzeichnisses der Zip-Datei ist so einfach wie:
Bearbeitet, um zu beachten: DotNetZip lebte früher bei Codeplex. Codeplex wurde heruntergefahren. Das alte Archiv ist weiterhin bei Codeplex verfügbar . Es sieht so aus, als ob der Code nach Github migriert wurde:
quelle
Mit .Net Framework 4.5 (mit ZipArchive ):
Finde "myfile" in zipfile und extrahiere es.
quelle
System.IO.Compression.dll
undSystem.IO.Compression.FileSystem.dll
In etwa so werden die Dateien einzeln aufgelistet und extrahiert, wenn Sie SharpZipLib verwenden möchten:
Basierend auf diesem Beispiel: Inhalt in der Zip-Datei
quelle
So kann eine UTF8-Textdatei aus einem Zip-Archiv in eine Zeichenfolgenvariable (.NET Framework 4.5 und höher) gelesen werden:
quelle
Zip-Dateien haben ein Inhaltsverzeichnis. Jedes Zip-Dienstprogramm sollte nur das Inhaltsverzeichnis abfragen können. Oder Sie können ein Befehlszeilenprogramm wie 7zip -t verwenden, um das Inhaltsverzeichnis zu drucken und in eine Textdatei umzuleiten.
quelle
In diesem Fall müssen Sie lokale Zip-Header-Einträge analysieren. Jede in einer Zip-Datei gespeicherte Datei verfügt über einen vorangegangenen Eintrag für den lokalen Dateikopf, der (normalerweise) genügend Informationen für die Dekomprimierung enthält. Im Allgemeinen können Sie solche Einträge im Stream einfach analysieren, die erforderliche Datei auswählen, den Kopf und die komprimierten Dateidaten in andere kopieren Datei und rufen Sie Unzip für diesen Teil auf (wenn Sie nicht mit dem gesamten Zip-Dekomprimierungscode oder der Bibliothek arbeiten möchten).
quelle