0

我正在使用 Java。

我想使用Deflater 类对一些输入进行放气,然后我想以 GZIP 格式输出它,以便可以用 GZIP 解压缩。我怎样才能做到这一点?我的理解是它会以不同的格式输出。我是个菜鸟,所以如果你能明确一点,也许可以给出一个非常有用的代码示例。

我不能使用 GZIPOutputStream 因为我需要在输出之前使用一些 Deflater 类特定的功能。

4

2 回答 2

2

显然无论如何都在引擎盖下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,因此需要子类化才能访问它。

于 2011-10-27T01:49:59.833 回答
0

第一个问题是为什么?

GZIPping Deflater 的输出意味着接收者必须同时 GUnzip 和 inflate。

GZIPping Deflater 的输出可能会增加大小。它肯定不会显着压缩它。

如果您需要 GZIP 输出,请忘记 Deflater。

如果您需要字典,请忘记 GZIP 输出。

于 2011-10-27T01:29:33.800 回答