设置Java Deflater(和Inflater)输出字节缓冲区的大小

Tan*_*ngo 5 java zlib deflate

我需要压缩一个或多个字节数组,然后再将它们膨胀回正常大小。我查看了api docs中给出的示例,并找到了其他一些示例。

看完这些示例之后,我有两个可能无关的问题,但是在我试图理解这一点时,它们似乎联系在一起。

  1. 在API文档示例中,Inflater和Deflater的输出缓冲区均设置为1024字节。示例数据只是一个简短的句子,因此是合理的。但是我怎么知道输出缓冲区有多大?还是Deflater(和Inflater)会根据需要调整输出缓冲区的大小?

  2. 不用猜测缓冲区的大小,我可以使用ByteArrayOutputStream并在其周围包装DeflatorOutputStream吗?由于ByteArrayOutputStream更改了字节数组的大小,因此不必知道输出的大小或对其进行猜测,因为在API示例中似乎必须这样做。

Pet*_*rey 3

1.在API文档示例中,Inflater和Deflater的输出缓冲区均设置为1024字节。示例数据只是一个简短的句子,所以这是合理的。但我怎么知道输出缓冲区有多大呢?或者 Deflater(和 Inflater)会根据需要调整输出缓冲区的大小吗?

在流中,缓冲区只是传递到另一个流之前的临时空间。更改缓冲区大小可以改变性能,但与处理的数据量关系不大。

2.我可以使用 ByteArrayOutputStream 并围绕它包装一个 DeflatorOutputStream ,而不是猜测缓冲区的大小吗?由于 ByteArrayOutputStream 更改了字节数组的大小,因此无需知道输出的大小或猜测它,就像在 API 示例中似乎必须做的那样。

您可以这样做,也可以将其直接发送到您想要数据进入的流。