Ich würde das ganze nicht als "
Rad neu erfinden" bezeichnen sondern als Lösung maßgeschneiderte Lösung. Denn wozu soll man das ganze noch packen und den Quelltext mit verschiedenen Algorythmen des Formates aufblähen wenn man letzendlich nur mehrere Daten in einem Stream speichern will.
Wenn du den Code verstanden hast weißt du auch wie der umgekehrte Weg lautet (lesen aus einem Stream geht mit read anstelle von write)
Deswegen auch mein Kommentar das du nachfragen sollst wenn du am Code etwas nicht verstehst.