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

时间:2010-08-16 10:34:37

标签: 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();

1 个答案:

答案 0 :(得分:5)

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

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

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

但是,您可以使用InflaterInputStream代替自己处理Inflate,让自己更轻松地完成所有这些工作。