2011-10-27 15 views
0

私はJavaを使用しています。deflaterの結果をGZIP形式で出力する方法は?

Deflater classを使用して入力を圧縮したい場合は、GZIP形式で出力してGZIPで解凍できるようにしたいと考えています。これどうやってするの?私はそれを別の形式で出力することを理解しています。私はノブなので、もしあなたが明示的で、スーパーの役に立つコード例を与えることができれば。

出力する前にいくつかのDeflaterクラス固有の機能を使用する必要があるため、GZIPOutputStreamを使用することはできません。

+0

あなたは何のDeflaterクラスの機能が必要なのでしょうか? –

+0

setDictionary関数です。 –

答えて

2

どうやらGZIPOutputStreamはフードの下でDeflaterを使用しているので、あなたは何もかも狂ったことを何もしようとしていません。

可能性(this pageから、おそらく読む価値があります)はDeflaterオブジェクトにアクセスできるようにGZIPOutputStreamをサブクラス化することです。多かれ少なかれ、このような何か(未テスト):

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です。アクセスするには、サブクラス化が必要です。

0

最初の質問はなぜですか?

GZIPping Deflaterの出力は、受信者がGUnzipとinflateの両方を必要としていることを意味します。

GZIPping Deflaterの出力によってサイズが大きくなることがあります。それは確かにそれを大幅に圧縮しません。

GZIP出力が必要な場合は、Deflaterを忘れてください。

辞書が必要な場合は、GZIP出力を忘れてください。

+0

出力をGZIPしたくないので、GZIP形式で出力したいので、GZIPを使って解凍することができます。基本的には、Deflateを使ってGZIPを実装しています。それは学校のプロジェクトに関係しているので、潜在的な奇妙さです。 –

関連する問題