1

谁能告诉我如何解压缩字节数组?

这是我的代码。我已经尝试了很多年,它给了我一个DataFormatException.

byte bArray[] = new byte[tSizeOfTile];
input.read(bArray, offset, limit);

byte[] unComp = new byte[bArray.length + 100];

Inflater inflate = new Inflater();
inflate.setInput(bArray);
inflate.inflate(unComp, offset, bArray.length + 100);
inflate.end();
4

1 回答 1

5

好吧,一个明确的问题是您显然在使用InputStream.read时没有检查返回值。这意味着您读取的数据可能比您预期的要少。

此外,您正在尝试unComp 偏移量膨胀,但最大长度与unComp.length. 这意味着如果offset是 0 以外的任何值,您可能会尝试写超出数组的末尾。

您的意思是指输入数组的偏移量吗?我不相信这就是它的意思。您应该使用setInput提供输入数据。

但是,您可以通过使用InflaterInputStream而不是自己处理来使所有这一切变得更容易Inflate

于 2010-08-16T10:40:36.090 回答