zlib c ++ und Extrahieren von Dateien

7

Ich habe begonnen, zlib 1.2.5 zu verwenden, und ich sehe keine Routine, um aus einer Zip-Datei zu extrahieren? Ich habe über eine Minizip-Anwendung gelesen, die Teil der Distribution ist.

Soll das so gemacht werden?

    
reza 14.01.2011, 23:07
quelle

3 Antworten

21

Ja, es macht es gut. (Wenn Sie jedoch keinen C-Code mögen, sollten Sie sich das 7-zip-SDK ansehen, das Code in C ++ und C # hat.)

  • Alle Funktionen zum Durchsuchen und Dekomprimieren der Dateien aus einem Zip-Archiv befinden sich in: unzip.h
  • Alle Funktionen komprimieren und fügen Dateien zu einem Zip-Archiv hinzu: zip.h

(siehe contrib \ minizip \ unzip.h und contrib \ minizip \ zip.h )

zum Beispiel dekomprimieren: Die Funktionen unzOpen() Ihrer Zip-Datei geben unzFile

zurück

Verwenden Sie dann unzGoToFirstFile() und unzGoToNextFile() auf diesem unzFile , um alle Dateien im Archiv zu durchsuchen.

Dann bekommst du die Dateiinfo für jede Datei mit unzGetCurrentFileInfo() , nämlich für ihre Größe,

sicherlich sollten Sie unzOpenCurrentFile() in einem Moment aufrufen.

und rufe unzReadCurrentFile() mit der Größe von fileinfo auf, um den binären Inhalt der archivierten Datei abzurufen.

Optional gibt es eine undurchsichtige Struktur, die Sie verwenden können, um Ihre eigene I / O-Funktion zu verwenden, aber offensichtlich gibt es eine Win32-Standardimplementierung für den Dateizugriff, so dass Sie sich darüber keine Gedanken machen können.

PS: und vergessen Sie nicht, unzCloseCurrentFile ()

aufzurufen     
Stephane Rolland 14.01.2011, 23:47
quelle
6

Von: Ссылка : 11. Kann zlib ZIP-Archive verwalten?

Nicht alleine, nein. Siehe das Verzeichnis contrib / minizip in der zlib-Distribution.

Es gibt dort kein Tutorial, aber die Quelle zip.c ist genau für IO (also vermutlich für Komprimierung und Dekomprimierung) für ZIP-Dateien, die zlib verwenden.

Und immer noch kein Tutorial, aber Ссылка gibt weitere Details.

    
Kirt Undercoffer 14.01.2011 23:23
quelle
2

Ich habe einen Wrapper um minizip gebaut, indem ich einige Funktionen hinzugefügt habe, die ich brauchte und es netter machte, sie zu benutzen. Is verwendet die neueste C ++ 11 und ist mit Visual Studio 2013 entwickelt (sollte tragbar sein, aber ich habe es nicht auf Unix getestet)

Es gibt eine vollständige Beschreibung hier: Ссылка

Sie können ganze Ordner, Streams, Vektoren usw. zippen. Ein nettes Feature ist auch, alles komplett im Speicher abzulegen.

    
Sebastian 26.07.2015 14:33
quelle

Tags und Links