Ich arbeite gerade an einem Node.js Projekt. Ich möchte eine ZIP-Datei lesen, ändern und schreiben können, ohne sie in FS zu speichern (wir erhalten sie per TCP und senden sie zurück, nachdem Änderungen vorgenommen wurden), und bis jetzt sieht es so aus, als wäre die einfache ZIP-Dateistruktur möglich. Zur Zeit beziehe ich mich auf this documentation.ZIP-Dateiformat. Wie lese ich die Datei richtig?
So ZIP-Datei hat einfache Struktur:
File header 1
File data 1
File data descriptor 1
File header 2
File data 2
File data descriptor 2
...
[other not important yet]
Zuerst müssen wir Datei-Header lesen, das Feld enthält compressed size
, und es könnte der perfekte Weg, um file data 1
von ihrer Gesamtlänge zu lesen. Aber es ist eigentlich nicht. Dieses Feld kann "0" oder "0xFFFFFFFF" enthalten, und diese Werte beschreiben nicht die tatsächliche Länge. In diesem Fall müssen wir Dateidaten ohne Informationen über ihre Länge lesen. Aber wie?
Compression/Decopression Algorithmus Beschreibungen sieht ziemlich komplex für mich, und ich plane, ZLIB für die Komprimierung selbst sowieso zu verwenden. Also wenn da etwas Nützliches beschrieben wird, dann habe ich den Punkt verpasst.
Kann jemand den richtigen Weg erklären, diese Dateien zu lesen?
P.S. Bitte vermeiden Sie, npm-Module vorzuschlagen. Ich möchte nicht nur das Problem lösen, sondern auch verstehen, wie die Dinge funktionieren.