Ohne die
ZLib intern genau zu kennen würde ich vorschlagen mit Chunking zu arbeiten. D.h. Du legst ein eigenes Envelope-Format fest und verwaltest Deine "Blöcke" selber:
Code:
Signatur
Startadresse des übernächsten Blocks (0=letzter)
ZLib-Komprimierte Daten
Das Schreiben wäre dann wie folgt:
Code:
Signatur schreiben
Solange Datei nicht zu Ende
Teilstream aus Datei erzeugen und komprimieren
Startadresse nächster Block aus Position und Länge schreiben
Teilstream anhängen
Und das Lesen:
Code:
Signatur prüfen
Entkomprimierte Datei leer erzeugen
Solange Datei nicht zu Ende
Startadresse nächster Block lesen
Länge des komprimierten Blocks errechnen
Komprimierten Block lesen
Entkomprimieren und an entpackte Datei anhängen