GZIP-Datei Gesamtlänge in C #

8

Ich habe eine gezippte Datei mit einer Größe von mehreren GB, möchte die Größe des entpackten Inhalts erreichen, möchte aber die Datei nicht in C # entzippen. Was könnte die Bibliothek sein, die ich benutzen kann? Wenn ich mit der rechten Maustaste auf die .gz-Datei klicke und zu Eigenschaften gehe, dann gibt es unter dem Archive Tab einen Eigenschaftsnamen TotalLength , der diesen Wert anzeigt. Aber ich möchte es programmgesteuert mit C # .. Irgendeine Idee?

    
Muhammad Ummar 12.01.2011, 06:57
quelle

4 Antworten

8

Die letzten 4 Bytes der gz-Datei enthalten die Länge.

Es sollte also ungefähr so ​​aussehen:

%Vor%     
leppie 12.01.2011, 07:36
quelle
4

Der letzte für Bytes einer .gz-Datei ist die unkomprimierte Eingabegröße modulo 2 ^ 32. Wenn Ihre unkomprimierte Datei nicht größer als 4 GB ist, lesen Sie einfach die letzten 4 Bytes der Datei. Wenn Sie eine größere Datei haben, bin ich mir nicht sicher, ob das möglich ist, ohne den Stream zu dekomprimieren.

    
Gabe 12.01.2011 07:36
quelle
2

EDIT: Siehe die Antworten von Leppie und Gabe; der einzige Grund, warum ich dies behalte (anstatt es zu löschen) ist, dass es notwendig sein kann, wenn Sie vermuten, dass die Länge & gt; 4GB

Für gzip scheinen diese Daten nicht direkt verfügbar zu sein - ich habe mir GZipStream und die SharpZipLib

%Vor%

Wenn es ein Zip war, dann SharpZipLib:

%Vor%     
Marc Gravell 12.01.2011 07:27
quelle
-1
%Vor%     
user571412 12.01.2011 07:19
quelle

Tags und Links