有人可以告诉我如何解压缩字节数组吗?
这是我的代码。我已经尝试了很久了,它给了我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/