Ich hatte dieses Problem und es war, weil ich meine Ausgabeströme nicht richtig geschlossen habe.
Ich versuche, eine JSON-Zeichenfolge mit DeflaterOutputStream in ein Byte-Array umzukehren, aber den folgenden Code, der java.io.EOFException: Unexpected end of ZLIB input stream
auslöst.
Dies funktioniert, wenn Sie die Zeichenfolge durch "Hallo Welt" ersetzen oder wenn Sie einige Zeichen aus der Zeichenfolge entfernen.
Irgendwelche Ideen?
%Vor%Java-Version (OSX):
%Vor% Ich glaube, dass es mit der Option "nicht verpacken" zu tun hat, die Sie sowohl in Deflater
als auch in Inflater
"wahr" weitergeben. Wenn Sie beide auf false
setzen, wird das Problem behoben - obwohl ich empfehle, die Zeichenfolgencodierung an beiden Stellen auf z. B. UTF-8 zu setzen, anstatt die Systemstandardcodierung zu verwenden.
Die Dokumente für "nowrap" sind ziemlich vage, aber sie sagen:
Hinweis: Bei Verwendung der Option 'nowrap' muss zusätzlich ein zusätzliches "Dummy" -Byte als Eingabe angegeben werden. Dies wird von der nativen ZLIB-Bibliothek benötigt, um bestimmte Optimierungen zu unterstützen.
Vermutlich fehlt dieses Dummy-Eingabebyte, obwohl es nicht erklärt, wohin es gehen soll ...