Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BZIP输出流的问题_Java_Stream_Buffer_Bzip - Fatal编程技术网

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是一个块编解码器,它不知道是否需要填充数据,或者是否有更多数据


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

尝试了这个方法。但我的解决方案最终带来了成功。始终关闭溪流是一个很好的做法,无论如何,我的荣誉是:)