Java BZIP输出流的问题
首先是一些代码:Java BZIP输出流的问题,java,stream,buffer,bzip,Java,Stream,Buffer,Bzip,首先是一些代码: ByteArrayOutputStream bos = new ByteArrayOutputStream(); CBZip2OutputStream zos = new CBZip2OutputStream(bos); provider.sendXMLFilelist(zos); zos.flush(); bos.flush(); length = bos.size(); “提供者”向“zos”发送(比如)200字节。但是lengthis==1。我知道bzip很好,但1
ByteArrayOutputStream bos = new ByteArrayOutputStream();
CBZip2OutputStream zos = new CBZip2OutputStream(bos);
provider.sendXMLFilelist(zos);
zos.flush();
bos.flush();
length = bos.size();
“提供者”向“zos”发送(比如)200字节。但是length
is==1。我知道bzip很好,但1字节似乎少了一点
当我这样做时:provider.sendXMLFilelist(bos)代码>长度大于等于200
为什么CBZip2OutputStream不输出他所有的压缩字节?
我正在使用此实现:我过去对此库实现存在问题,我建议您从中查看另一个bzip2实现。迁移不应该很复杂(替换CBZip2OutputStream->BZip2CompressorOutputStream,然后您就可以开始了)。我想我现在知道答案了。您必须.close()
bzip2流。Bzip2是一个块编解码器,它不知道是否需要填充数据,或者是否有更多数据
因此,通过告诉他关闭流,他可以输出流中所有的压缩数据。尝试了这个方法。但我的解决方案最终带来了成功。始终关闭溪流是一个很好的做法,无论如何,我的荣誉是:)