我有一个类,它有一个接收对象作为参数的方法。 此方法通过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压缩数据的所有例子都假设我想将它写入磁盘并创建一个物理文件,我不这样做。
我该怎么做?
提前致谢。
答案 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);
}