如何在Java中解压缩字节数组

saj*_*joo 1 java deflate

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

这是我的代码.我已经尝试了很多年,它给了我一个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();
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 5

嗯,一个明确的问题是你显然在InputStream.read没有检查返回值的情况下使用.这意味着您可能读取的数据少于预期.

此外,您试图unComp 偏移量进入膨胀,但最大长度与此相同unComp.length.这意味着如果offset不是0,你可能会尝试写入数组的末尾.

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

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