JavaTM Platform
Standard Ed. 6

java.util.zip
クラス Deflater

java.lang.Object
  上位を拡張 java.util.zip.Deflater

public class Deflater
extends Object

このクラスは、一般的な ZLIB 圧縮ライブラリを使用して汎用の圧縮アルゴリズムをサポートします。ZLIB 圧縮ライブラリは、当初 PNG グラフィック標準の一部として開発されたもので、特許では保護されていません。仕様の詳細は、「パッケージ java.util.zip の説明」を参照してください。

次に、Deflater および Inflater を使用して文字列をいくらか圧縮および圧縮解除するコードを示します。

 try {
     // Encode a String into bytes
     String inputString = "blahblahblah??";
     byte[] input = inputString.getBytes("UTF-8");

     // Compress the bytes
     byte[] output = new byte[100];
     Deflater compresser = new Deflater();
     compresser.setInput(input);
     compresser.finish();
     int compressedDataLength = compresser.deflate(output);

     // Decompress the bytes
     Inflater decompresser = new Inflater();
     decompresser.setInput(output, 0, compressedDataLength);
     byte[] result = new byte[100];
     int resultLength = decompresser.inflate(result);
     decompresser.end();

     // Decode the bytes into a String
     String outputString = new String(result, 0, resultLength, "UTF-8");
 } catch(java.io.UnsupportedEncodingException ex) {
     // handle
 } catch (java.util.zip.DataFormatException ex) {
     // handle
 }
 

関連項目:
Inflater

フィールドの概要
static int BEST_COMPRESSION
          最適な圧縮のための圧縮レベルです。
static int BEST_SPEED
          最高速での圧縮のための圧縮レベルです。
static int DEFAULT_COMPRESSION
          デフォルトの圧縮レベルです。
static int DEFAULT_STRATEGY
          デフォルトの圧縮方法です。
static int DEFLATED
          deflate アルゴリズムの圧縮メソッド (現在サポートされているのは 1 つだけ) です。
static int FILTERED
          小さい値がある程度ランダムに分布しているデータに最適な圧縮方法です。
static int HUFFMAN_ONLY
          ハフマンコーディング専用の圧縮方法です。
static int NO_COMPRESSION
          圧縮しない場合の圧縮レベルです。
 
コンストラクタの概要
Deflater()
          デフォルトの圧縮レベルで新しいコンプレッサを作成します。
Deflater(int level)
          指定された圧縮レベルで新しいコンプレッサを作成します。
Deflater(int level, boolean nowrap)
          指定された圧縮レベルで新しいコンプレッサを作成します。
 
メソッドの概要
 int deflate(byte[] b)
          指定されたバッファーを圧縮データで満たします。
 int deflate(byte[] b, int off, int len)
          指定されたバッファーを圧縮データで満たします。
 void end()
          コンプレッサを閉じ、圧縮解除された入力をすべて破棄します。
protected  void finalize()
          ガベージコレクションが行われたときにコンプレッサを閉じます。
 void finish()
          このメソッドが呼び出されると、圧縮が入力バッファーの現在の内容で終了する必要があることを示します。
 boolean finished()
          圧縮データの出力ストリームの最後に達した場合に true を返します。
 int getAdler()
          圧縮解除データの ADLER-32 値を返します。
 long getBytesRead()
          これまでに入力された、圧縮解除されたバイトの総数を返します。
 long getBytesWritten()
          これまでに出力された、圧縮されたバイトの総数を返します。
 int getTotalIn()
          これまでに入力された、圧縮解除されたバイトの総数を返します。
 int getTotalOut()
          これまでに出力された、圧縮されたバイトの総数を返します。
 boolean needsInput()
          入力データバッファーが空であるため、setInput() を呼び出して入力を追加する必要がある場合に true を返します。
 void reset()
          新しい入力データのセットを処理できるようにデフレータをリセットします。
 void setDictionary(byte[] b)
          圧縮のためのプリセットディクショナリを設定します。
 void setDictionary(byte[] b, int off, int len)
          圧縮のためのプリセットディクショナリを設定します。
 void setInput(byte[] b)
          圧縮のための入力データを設定します。
 void setInput(byte[] b, int off, int len)
          圧縮のための入力データを設定します。
 void setLevel(int level)
          現在の圧縮レベルを指定された値に設定します。
 void setStrategy(int strategy)
          圧縮方法を指定された値に設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

DEFLATED

public static final int DEFLATED
deflate アルゴリズムの圧縮メソッド (現在サポートされているのは 1 つだけ) です。

関連項目:
定数フィールド値

NO_COMPRESSION

public static final int NO_COMPRESSION
圧縮しない場合の圧縮レベルです。

関連項目:
定数フィールド値

BEST_SPEED

public static final int BEST_SPEED
最高速での圧縮のための圧縮レベルです。

関連項目:
定数フィールド値

BEST_COMPRESSION

public static final int BEST_COMPRESSION
最適な圧縮のための圧縮レベルです。

関連項目:
定数フィールド値

DEFAULT_COMPRESSION

public static final int DEFAULT_COMPRESSION
デフォルトの圧縮レベルです。

関連項目:
定数フィールド値

FILTERED

public static final int FILTERED
小さい値がある程度ランダムに分布しているデータに最適な圧縮方法です。ハフマンコーディングを増やし、文字列マッチングを減らします。

関連項目:
定数フィールド値

HUFFMAN_ONLY

public static final int HUFFMAN_ONLY
ハフマンコーディング専用の圧縮方法です。

関連項目:
定数フィールド値

DEFAULT_STRATEGY

public static final int DEFAULT_STRATEGY
デフォルトの圧縮方法です。

関連項目:
定数フィールド値
コンストラクタの詳細

Deflater

public Deflater(int level,
                boolean nowrap)
指定された圧縮レベルで新しいコンプレッサを作成します。パラメータ nowrap が true の場合、ZILB ヘッダフィールドおよびチェックサムフィールドは、GZIP および PKZIP の両方で使用される圧縮形式のサポートには使用されません。

パラメータ:
level - 圧縮レベル (0 〜 9)
nowrap - true の場合は GZIP 互換の圧縮を使用

Deflater

public Deflater(int level)
指定された圧縮レベルで新しいコンプレッサを作成します。圧縮データは ZLIB 形式で生成されます。

パラメータ:
level - 圧縮レベル (0 〜 9)

Deflater

public Deflater()
デフォルトの圧縮レベルで新しいコンプレッサを作成します。圧縮データは ZLIB 形式で生成されます。

メソッドの詳細

setInput

public void setInput(byte[] b,
                     int off,
                     int len)
圧縮のための入力データを設定します。needsInput() でさらに入力が必要であることを示す true が返されるときは、このメソッドを呼び出す必要があります。

パラメータ:
b - 入力データバイト
off - データの開始オフセット
len - データの長さ
関連項目:
needsInput()

setInput

public void setInput(byte[] b)
圧縮のための入力データを設定します。needsInput() でさらに入力が必要であることを示す true が返されるときは、このメソッドを呼び出す必要があります。

パラメータ:
b - 入力データバイト
関連項目:
needsInput()

setDictionary

public void setDictionary(byte[] b,
                          int off,
                          int len)
圧縮のためのプリセットディクショナリを設定します。プリセットディクショナリは、履歴バッファーがあらかじめ決定できるときに使用されます。データがあとで Inflater.inflate() によって圧縮解除されるときに、Inflater.getAdler() を呼び出して圧縮解除に必要なディクショナリの Adler-32 値を取得できます。

パラメータ:
b - ディクショナリデータバイト
off - データの開始オフセット
len - データの長さ
関連項目:
Inflater.inflate(byte[], int, int), Inflater.getAdler()

setDictionary

public void setDictionary(byte[] b)
圧縮のためのプリセットディクショナリを設定します。プリセットディクショナリは、履歴バッファーがあらかじめ決定できるときに使用されます。データがあとで Inflater.inflate() によって圧縮解除されるときに、Inflater.getAdler() を呼び出して圧縮解除に必要なディクショナリの Adler-32 値を取得できます。

パラメータ:
b - ディクショナリデータバイト
関連項目:
Inflater.inflate(byte[], int, int), Inflater.getAdler()

setStrategy

public void setStrategy(int strategy)
圧縮方法を指定された値に設定します。

パラメータ:
strategy - 新しい圧縮方法
例外:
IllegalArgumentException - 圧縮方法が無効な場合

setLevel

public void setLevel(int level)
現在の圧縮レベルを指定された値に設定します。

パラメータ:
level - 新しい圧縮レベル (0 〜 9)
例外:
IllegalArgumentException - 圧縮レベルが無効な場合

needsInput

public boolean needsInput()
入力データバッファーが空であるため、setInput() を呼び出して入力を追加する必要がある場合に true を返します。

戻り値:
入力データバッファーが空であるため、setInput() を呼び出して入力を追加する必要がある場合に true

finish

public void finish()
このメソッドが呼び出されると、圧縮が入力バッファーの現在の内容で終了する必要があることを示します。


finished

public boolean finished()
圧縮データの出力ストリームの最後に達した場合に true を返します。

戻り値:
圧縮データの出力ストリームの最後に達した場合は true

deflate

public int deflate(byte[] b,
                   int off,
                   int len)
指定されたバッファーを圧縮データで満たします。実際に圧縮されたデータのバイト数を返します。戻り値 0 は、入力データがさらに必要かどうかを判断するために needsInput() を呼び出す必要があることを示します。

パラメータ:
b - 圧縮データ用のバッファー
off - データの開始オフセット
len - 圧縮データの最大バイト数
戻り値:
圧縮データの実効バイト数

deflate

public int deflate(byte[] b)
指定されたバッファーを圧縮データで満たします。実際に圧縮されたデータのバイト数を返します。戻り値 0 は、入力データがさらに必要かどうかを判断するために needsInput() を呼び出す必要があることを示します。

パラメータ:
b - 圧縮データ用のバッファー
戻り値:
圧縮データの実効バイト数

getAdler

public int getAdler()
圧縮解除データの ADLER-32 値を返します。

戻り値:
圧縮解除データの ADLER-32 値

getTotalIn

public int getTotalIn()
これまでに入力された、圧縮解除されたバイトの総数を返します。

バイト数は Integer.MAX_VALUE よりも大きくなる場合があるため、この情報を得る場合は getBytesRead() メソッドの方を優先的に使用してください。

戻り値:
これまでに入力された、圧縮解除されたバイトの総数

getBytesRead

public long getBytesRead()
これまでに入力された、圧縮解除されたバイトの総数を返します。

戻り値:
これまでに入力された、圧縮解除されたバイトの総数 (負ではない値)
導入されたバージョン:
1.5

getTotalOut

public int getTotalOut()
これまでに出力された、圧縮されたバイトの総数を返します。

バイト数は Integer.MAX_VALUE よりも大きくなる場合があるため、この情報を得る場合は getBytesWritten() メソッドの方を優先的に使用してください。

戻り値:
これまでに出力された、圧縮されたバイトの総数

getBytesWritten

public long getBytesWritten()
これまでに出力された、圧縮されたバイトの総数を返します。

戻り値:
これまでに出力された、圧縮されたバイトの総数 (負ではない値)
導入されたバージョン:
1.5

reset

public void reset()
新しい入力データのセットを処理できるようにデフレータをリセットします。現在の圧縮レベルと圧縮方法を保持します。


end

public void end()
コンプレッサを閉じ、圧縮解除された入力をすべて破棄します。このメソッドは、コンプレッサを使用しなくなったときに呼び出す必要がありますが、finalize() メソッドによっても自動的に呼び出されます。このメソッドが呼び出されたあとの Deflater オブジェクトの動作は保証されません。


finalize

protected void finalize()
ガベージコレクションが行われたときにコンプレッサを閉じます。

オーバーライド:
クラス Object 内の finalize

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。