首先一些代码:

ByteArrayOutputStream bos = new ByteArrayOutputStream();
CBZip2OutputStream zos = new CBZip2OutputStream(bos);

provider.sendXMLFilelist(zos);
zos.flush();
bos.flush();

length = bos.size();


“提供者”将200个字节发送(让我们说)“ zos”。但是length是==1。我知道bzip很好,但是1个字节似乎少了一点。

当我这样做时:provider.sendXMLFilelist(bos);比长度== 200。

为什么CBZip2OutputStream不输出所有压缩字节?

我正在使用此实现:http://www.kohsuke.org/bzip2/

最佳答案

我想我现在有了答案。您必须.close() bzip2流。 Bzip2是一个块编解码器,它不知道它是否必须填充数据或是否还有其他数据。

因此,通过告诉他关闭流,使他输出所有压缩数据。

关于java - BZIP-OutputStream问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4359415/

10-11 04:20