DeflaterOutputStreamを使用してJSON文字列をバイト配列に往復しようとしていますが、コードはjava.io.EOFException: Unexpected end of ZLIB input stream
です。ZLIB入力ストリームの予期しない終了
文字列を "Hello world"に置き換えるか、下の文字列からいくつかの文字を削除すると機能します。
アイデア?
public static void main(String[] args) throws IOException {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
DeflaterOutputStream deflate = new DeflaterOutputStream(bytes, new Deflater(Deflater.BEST_COMPRESSION, true));
OutputStreamWriter writer = new OutputStreamWriter(deflate);
writer.write("[1,null,null,\"a\",null,null,null,null,[1,null,null,null,null,null,null,null,null,null,null,null,null,0.0,0.0,null,null]");
writer.flush();
writer.close();
InflaterInputStream inflaterIn = new InflaterInputStream(new ByteArrayInputStream(bytes.toByteArray()), new Inflater(true));
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inflaterIn));
System.out.println(bufferedReader.readLine());
}
Javaバージョン(OSX):
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03-383-11A511)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02-383, mixed mode)
それだけです。以下を追加すると、問題が修正されます。\t \t bytes.write(0); – slipheed
@slipheed:聞いてうれしいです:) –