- 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 }- 導入されたバージョン:
- 1.1
- 関連項目:
Deflater
-
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 非推奨のメソッド 修飾子と型 メソッド 説明 voidend()デコンプレッサを閉じ、圧縮解除された入力をすべて破棄します。protected voidfinalize()非推奨。finalizeメソッドは推奨されていません。 クリーンアップを実行するためにfinalizeをオーバーライドするサブクラスは、代替クリーンアップ・メカニズムを使用し、オーバーライドするfinalizeメソッドを削除するように変更する必要があります。finalizeメソッドをオーバーライドする場合、実装では、super.finalize()がObject.finalize()の説明に従って呼び出されることを明示的に確認する必要があります。 移行オプションの詳細については、Object.finalize()の仕様を参照してください。booleanfinished()圧縮データ・ストリームの最後に達した場合にtrueを返します。intgetAdler()圧縮解除データのADLER-32値を返します。longgetBytesRead()これまでに入力された、圧縮されたバイトの総数を返します。longgetBytesWritten()これまでに出力された、圧縮解除されたバイトの総数を返します。intgetRemaining()入力バッファに残っているバイトの総数を返します。intgetTotalIn()これまでに入力された、圧縮されたバイトの総数を返します。intgetTotalOut()これまでに出力された、圧縮解除されたバイトの総数を返します。intinflate(byte[] b)指定されたバッファにバイトを圧縮解除します。intinflate(byte[] b, int off, int len)指定されたバッファにバイトを圧縮解除します。booleanneedsDictionary()プリセット・ディクショナリが圧縮解除に必要な場合にtrueを返します。booleanneedsInput()入力バッファにデータが残っていない場合にtrueを返します。voidreset()新しい入力データ・セットが処理できるようにインフレータをリセットします。voidsetDictionary(byte[] b)プリセット・ディクショナリを指定のバイト配列に設定します。voidsetDictionary(byte[] b, int off, int len)プリセット・ディクショナリを指定のバイト配列に設定します。voidsetInput(byte[] b)圧縮解除のための入力データを設定します。voidsetInput(byte[] b, int off, int len)圧縮解除のための入力データを設定します。
-
-
-
コンストラクタの詳細
-
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
@Deprecated(since="9") protected void finalize()
非推奨。finalizeメソッドは推奨されていません。 クリーンアップを実行するためにfinalizeをオーバーライドするサブクラスは、代替クリーンアップ・メカニズムを使用し、オーバーライドするfinalizeメソッドを削除するように変更する必要があります。finalizeメソッドをオーバーライドする場合、実装では、super.finalize()がObject.finalize()の説明に従って呼び出されることを明示的に確認する必要があります。 移行オプションの詳細については、Object.finalize()の仕様を参照してください。ガベージ・コレクションが行われたときにデコンプレッサを閉じます。- オーバーライド:
finalize、クラス:Object- 関連項目:
WeakReference,PhantomReference
-
-