当使用 java.util.zip.Deflater 的 deflate 方法时,必须提供一个 byte[] 作为参数,这个 byte[] 应该初始化到多大?我读过不能保证压缩数据甚至比未压缩数据更小。我应该接受一定比例的输入吗? 目前我把它做成输入的两倍
最佳答案
调用 deflate
后,调用 finished
看是否还有更多输出。例如:
byte[] buffer = new byte[BUFFER_SIZE];
while (!deflater.finished()) {
int n = deflater.deflate(buffer);
// deal with the n bytes in out here
}
如果您只想收集内存中的所有字节,您可以使用 ByteArrayOutputStream。例如:
byte[] buffer = new byte[BUFFER_SIZE];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while (!deflater.finished()) {
int n = deflater.deflate(buffer);
baos.write(buffer, 0, n);
}
return baos.toByteArray();
关于Java - 压缩输出字节数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1207877/