我正在使用Java。
我想使用Deflater class压缩一些输入,然后以GZIP格式输出它,以便可以用GZIP解压缩。我怎样才能做到这一点?我的理解是它将以其他格式输出。我是一个菜鸟,所以如果您可以露骨,并给出一个非常有用的代码示例。
我不能使用GZIPOutputStream,因为我需要在输出之前使用一些Deflater类特定的功能。
最佳答案
显然GZIPOutputStream
仍然在引擎盖下使用Deflater
,因此您并没有尝试做任何疯狂的事情。
一种可能性(来自this page,可能值得一读)是GZIPOutputStream
的子类,以便您可以访问其Deflater
对象。或多或少像这样(未经测试):
public class MyGZIPOutputStream extends GZIPOutputStream {
public MyGZIPOutputStream(final OutputStream out) throws IOException {
super(out);
}
public void setDictionary(byte[] b) {
def.setDictionary(b);
}
}
然后,可以在使用
MyGZIPOutputStream
保存文件之前进行setDictionary调用。变量
def
是GZIPOutputStream
的受保护成员,因此必须有子类才能访问它。