有人可以告诉我如何解压缩字节数组吗?

这是我的代码。我已经尝试了很久了,它给了我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();

最佳答案

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

另外,您尝试从偏移量膨胀为unComp,但最大长度与unComp.length相同。这意味着如果offset不是0,则可能是在数组末尾写。

您的意思是引用输入数组的偏移量吗?我不相信那是什么意思。您应该使用setInput仅提供输入数据。

但是,通过使用InflaterInputStream而不是自己处理Inflate,可以使所有这些事情变得更加容易。

关于java - 如何在Java中解压缩字节数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3492349/

10-08 23:02