我正在使用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调用。

变量defGZIPOutputStream的受保护成员,因此必须有子类才能访问它。

07-24 09:20