JavaTM Platform
Standard Ed. 6

java.util.zip
クラス Inflater

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

public class Inflater
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
 }
 

関連項目:
Deflater

コンストラクタの概要
Inflater()
          新しいデコンプレッサを作成します。
Inflater(boolean nowrap)
          新しいデコンプレッサを作成します。
 
メソッドの概要
 void end()
          デコンプレッサを閉じ、圧縮解除された入力をすべて破棄します。
protected  void finalize()
          ガベージコレクションが行われたときにデコンプレッサを閉じます。
 boolean finished()
          圧縮データストリームの最後に達した場合に true を返します。
 int getAdler()
          圧縮解除データの ADLER-32 値を返します。
 long getBytesRead()
          これまでに入力された、圧縮されたバイトの総数を返します。
 long getBytesWritten()
          これまでに出力された、圧縮解除されたバイトの総数を返します。
 int getRemaining()
          入力バッファーに残っているバイトの総数を返します。
 int getTotalIn()
          これまでに入力された、圧縮されたバイトの総数を返します。
 int getTotalOut()
          これまでに出力された、圧縮解除されたバイトの総数を返します。
 int inflate(byte[] b)
          指定されたバッファーにバイトを圧縮解除します。
 int inflate(byte[] b, int off, int len)
          指定されたバッファーにバイトを圧縮解除します。
 boolean needsDictionary()
          プリセットディクショナリが圧縮解除に必要な場合に true を返します。
 boolean needsInput()
          入力バッファーにデータが残っていない場合に 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)
          圧縮解除のための入力データを設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Inflater

public Inflater(boolean nowrap)
新しいデコンプレッサを作成します。パラメータ nowrap が true の場合は、ZLIB ヘッダーおよびチェックサムフィールドは使用されません。これによって、GZIP と PKZIP の両方で使用される圧縮形式との互換性が確保されます。  

注:nowrap オプションを使用する場合は、入力として特別な「ダミー」バイトを指定する必要があります。これは、最適化を行うために ZLIB ネイティブライブラリで必要となります。

パラメータ:
nowrap - true の場合は GZIP 互換の圧縮をサポート

Inflater

public Inflater()
新しいデコンプレッサを作成します。

メソッドの詳細

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)
プリセットディクショナリを指定のバイト配列に設定します。inflate() が 0 を返す場合、または needsDictionary() がプリセットディクショナリを必要とすることを示す true を返す場合は、このメソッドを呼び出す必要があります。getAdler() メソッドを使用して必要なディクショナリの Adler-32 値を取得できます。

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

setDictionary

public void setDictionary(byte[] b)
プリセットディクショナリを指定のバイト配列に設定します。inflate() が 0 を返す場合、または needsDictionary() がプリセットディクショナリを必要とすることを示す true を返す場合は、このメソッドを呼び出す必要があります。getAdler() メソッドを使用して必要なディクショナリの Adler-32 値を取得できます。

パラメータ:
b - ディクショナリデータバイト
関連項目:
needsDictionary(), getAdler()

getRemaining

public int getRemaining()
入力バッファーに残っているバイトの総数を返します。このメソッドは、圧縮解除が終了したあとに入力バッファーに何バイト残っているかを調べるのに使用できます。

戻り値:
入力バッファーに残っているバイトの総数

needsInput

public boolean needsInput()
入力バッファーにデータが残っていない場合に true を返します。このメソッドを使用すると、入力データを追加するために #setInput を呼び出す必要があるかどうかを判断できます。

戻り値:
入力バッファーにデータが残っていない場合は true

needsDictionary

public boolean needsDictionary()
プリセットディクショナリが圧縮解除に必要な場合に true を返します。

戻り値:
プリセットディクショナリが圧縮解除に必要な場合は true
関連項目:
setDictionary(byte[], int, int)

finished

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

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

inflate

public int inflate(byte[] b,
                   int off,
                   int len)
            throws DataFormatException
指定されたバッファーにバイトを圧縮解除します。実際に圧縮解除されたバイト数を返します。戻り値 0 は、入力データやプリセットライブラリがさらに必要かどうかを判断するために needsInput() または needsDictionary() を呼び出す必要があることを示します。後者の場合、getAdler() を使用して、要求されるディクショナリの Adler-32 値を取得できます。

パラメータ:
b - 圧縮解除されるデータ用のバッファー
off - データの開始オフセット
len - 圧縮解除される最大バイト数
戻り値:
圧縮解除される実効バイト数
例外:
DataFormatException - 圧縮データ形式が無効な場合
関連項目:
needsInput(), needsDictionary()

inflate

public int inflate(byte[] b)
            throws DataFormatException
指定されたバッファーにバイトを圧縮解除します。実際に圧縮解除されたバイト数を返します。戻り値 0 は、入力データやプリセットライブラリがさらに必要かどうかを判断するために needsInput() または needsDictionary() を呼び出す必要があることを示します。後者の場合、getAdler() を使用して、要求されるディクショナリの Adler-32 値を取得できます。

パラメータ:
b - 圧縮解除されるデータ用のバッファー
戻り値:
圧縮解除される実効バイト数
例外:
DataFormatException - 圧縮データ形式が無効な場合
関連項目:
needsInput(), needsDictionary()

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() メソッドによっても自動的に呼び出されます。このメソッドが呼び出されたあとの Inflater オブジェクトの動作は保証されません。


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 も参照してください。