如何解压缩字节数组中的gzip压缩数据?

时间:2008-11-06 21:04:33

标签: java io gzipinputstream

我有一个类,它有一个接收对象作为参数的方法。 此方法通过RMI调用。

public RMIClass extends Serializable {
    public RMIMethod(MyFile file){
        // do stuff
    }
}

MyFile有一个名为“body”的属性,它是一个字节数组。

public final class MyFile implements Serializable {

    private byte[] body = new byte[0];
    //.... 

    public byte[] getBody() {
        return body;
    }
    //....
}

此属性包含由另一个应用程序解析的文件的gzip压缩数据。

我需要先解压缩此字节数组,然后再对其执行进一步的操作。

我看到的解压缩gzip压缩数据的所有例子都假设我想将它写入磁盘并创建一个物理文件,我不这样做。

我该怎么做?

提前致谢。

4 个答案:

答案 0 :(得分:10)

ByteArrayInputStream包裹你的字节数组并将其输入GZipInputStream

答案 1 :(得分:1)

查看这些示例,无论他们在哪里使用FileOutputStream,都要使用ByteArrayOutputStream。无论他们在哪里使用FileInputStream,都要使用ByteArrayInputStream。其余的应该很简单。

答案 2 :(得分:0)

为什么不创建自己的扩展 OutputStream 的类,或者编写的存档是什么?

答案 3 :(得分:0)

如果要写入ByteBuffer,可以执行此操作。

private static void uncompress(final byte[] input, final ByteBuffer output) throws IOException
    {
        final GZIPInputStream inputGzipStream = new GZIPInputStream(new ByteArrayInputStream(input));
        Channels.newChannel(inputGzipStream).read(output);
    }