Zip-Komprimierungsbibliothek in C für Streaming

8

Gibt es eine Bibliothek zum Erstellen von ZIP-Dateien (das zip-Dateiformat ), das nicht mit gzip oder einer anderen Komprimierung arbeitet Format) während der Übertragung (damit ich die Datei während der Komprimierung senden kann) für sehr große Dateien (4 GB und höher).

Das Komprimierungsverhältnis spielt keine Rolle (hauptsächlich Mediendateien).

Die Bibliothek muss eine C-Schnittstelle haben und an Debian und OSX arbeiten.

    
Daniel W 30.08.2011, 10:49
quelle

3 Antworten

4

libarchive unterstützt alle gewünschten Formate, On-the-Fly und sogar In-Memory-Dateien.

    
wormsparty 31.08.2011, 11:08
quelle
3

zlib unterstützt die Komprimierung um Chunks. Sie sollten in der Lage sein, direkt nach dem Komprimieren einen kleinen Chunk zu senden, während die Bibliothek den nächsten Chunk noch komprimiert. (Siehe dieses Beispiel )

(Die Dateitabelle wird leider am Ende der Zip-Datei gespeichert, so dass die Datei bis zum Abschluss auf der Empfängerseite unbrauchbar ist)

    
Adrien Plisson 30.08.2011 10:54
quelle
1

Während diese Frage alt und bereits beantwortet ist, werde ich eine neue mögliche Lösung für diejenigen finden, die das finden.

Ich brauchte etwas sehr ähnliches, eine portable und sehr kleine Bibliothek, die ZIP-Archive streamweise in C erstellte. Ich fand nichts, was zu der Rechnung passte, die ich mit zlib erstellt habe, hier verfügbar:

Ссылка

Dieser Code hängt nur von zlib ab und bietet im Wesentlichen eine einfache Schnittstelle zum Erstellen von ZIP-Archiven. Am wichtigsten ist (für mich), dass die Ausgabe zu einer Pipe, einem Socket gestreamt werden kann, was auch immer der Ausgabestrom sein muss, der nicht gesucht werden muss. Der Code ist sehr klein, eine einzelne Quelldatei und eine Header-Datei. Funktioniert auf OSX und Linux und wahrscheinlich auch anderswo. Hoffe es hilft jemandem über mich hinaus ...

    
terse 18.09.2014 18:27
quelle