java - ZLIB 输入流意外结束

标签 java deflate

我正在尝试使用 DeflaterOutputStream 将 JSON 字符串往返转换为字节数组,但下面的代码抛出 java.io.EOFException: Unexpected end of ZLIB input stream

当您将字符串替换为“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)

最佳答案

我遇到了这个问题,这是因为我没有正确关闭我的输出流。

关于java - ZLIB 输入流意外结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7195135/

相关文章:

java - onConfigurationChanged() 没有为keyboardHidden 触发

java - Python 上的 zlib.compress 和 Java (Android) 上的 Deflater.deflate 兼容吗?

java - 如何使用 "DFLT-X"方法编写 Zip 文件

c++ - Z_DATA_ERROR 膨胀中途

java - 在 Java 中放气 - 在 Javascript 中膨胀

c# - ServiceStack - 对 JSONP 请求使用 gzip/deflate 压缩

java - @Option(longName =“fileName”)在Java中是什么意思?

java - 使用另一个线程终止一个线程(循环)

Java - 何时使用 JSR223 脚本执行基于 java 的语言

java - Scpsolver jar 的代码示例