编辑:我真的只需要知道Deflater派生类何时决定写入页眉和页脚数据,以及如何利用这些事实。我真的很想做以下事情:

  • 为带有一些字节的Deflater派生类准备字典(我想我明白了)。
  • 发送一些要压缩的数据到Deflater派生类(我想我明白了)。
  • 将所有压缩数据(无标题或页脚数据)输出到我想要的任何位置(不确定如何执行此操作,只要有一致的标题/页脚,或者只有一个,也可以) )。
  • 通过从1开始重新使用对象。

  • 原始问:我正在使用Java DeflaterOutputStream压缩一些数据。我还通过修改页眉和页脚来修改此压缩数据。我想给DeflaterOutputStream一些输入,让它仅输出压缩数据部分,而不输出gzip格式的页眉或页脚。我该怎么办?

    到目前为止,我一直在尝试做这样的事情:
    internalWriter.write(storage, 0, amountRead);
    internalWriter.finish();
    internalWriter.getDef().reset();
    

    internalWriter是DeflaterOutputStream的扩展。这将输出带有页眉和页脚的压缩数据。但是,在随后的具有相同对象的调用中,它将输出压缩数据和页脚。我基本上只希望压缩的数据,或者每次都可能发生相同的事情。有任何想法吗?对压缩流如何使用close,flush,finish进行快速说明,也可能对我有所帮助,重点放在创建和输出页眉和页脚的时间。

    每次我使用DeflaterOutputStream时,我都希望它立即输出所有内容。这就是为什么我如右图所示在右侧之后完成终点...

    最佳答案

    请参阅deflater(sic)文档。如果nowrap为true,则不生成头文件或尾文件-deflate format中仅原始压缩数据。

    10-06 07:25