Unerwartetes Ende des ZLIB-Eingabestreams

7

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%     
slipheed 25.08.2011, 18:07
quelle

2 Antworten

8

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 ...

    
Jon Skeet 25.08.2011, 18:21
quelle
12

Ich hatte dieses Problem und es war, weil ich meine Ausgabeströme nicht richtig geschlossen habe.

    
Sam 20.01.2012 22:19
quelle

Tags und Links