编辑:我真的只需要知道 Deflater 派生类何时决定写入页眉和页脚数据,以及如何利用这些事实。我真的很想做以下事情:
为 Deflater 派生类添加一些字节的字典(我想我明白了)。
将一些要压缩的数据发送到 Deflater 派生类(我想我明白了)。
将所有压缩数据(没有页眉或页脚数据)输出到我想要的任何地方(不确定如何执行此操作,也可以同时拥有页眉/页脚,或者只有一个,只要它是一致的) .
从 1 重新开始重用对象。
原问:我正在使用 Java DeflaterOutputStream 来压缩一些数据。我还通过修改页眉和页脚来修改这些压缩数据。我想给 DeflaterOutputStream 一些输入,让它只输出压缩数据部分,而不是 gzip 格式的页眉或页脚。我该怎么做?
到目前为止,我一直在尝试做这样的事情:
internalWriter.write(storage, 0, amountRead);
internalWriter.finish();
internalWriter.getDef().reset();
这里的 internalWriter 是 DeflaterOutputStream 的扩展。这将输出带有页眉和页脚的压缩数据。但是,在使用相同对象的后续调用中,它会输出压缩数据和页脚。我基本上只想要压缩数据,或者每次都发生同样的事情。有任何想法吗?对压缩流如何使用 close、flush、finish 的快速解释也可能对我有所帮助,重点是何时创建和输出页眉和页脚。
每次我使用 DeflaterOutputStream 时,我都希望它立即输出所有内容。这就是为什么我在上面看到的右边之后完成了...