Java - 压缩输出字节数组的大小

标签 java size deflate

当使用 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/

相关文章:

java - 从java检测mysql表锁

android - 如何在 Android 中压缩字符串

java - 具有各种可能的布局

java - 在gradle中为Heroku创建webapp-runner.jar

java - 使用 "add"方法将对象从单独的类添加到 ArrayList

c# - c#中类实例的内存使用

javascript - 拉伸(stretch) <img> 以适合整个屏幕,而不保持宽高比且没有滚动条

javascript - 顶点图表拉伸(stretch)全尺寸

c++ - 使用 zlib C++ 对 PDF 进行收缩和膨胀

ios - Swift 膨胀 [UInt8] 无法使用 miniz lib 缩小