このクラスは、ZLIB圧縮バイトの順序を変更します。 入力バイト・シーケンスは、setInput()
メソッドの1つを介してバイト配列またはバイト・バッファで提供されます。 出力バイト・シーケンスは、deflate()
メソッドに渡された出力バイト配列またはバイト・バッファに書き込まれます。
次に、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 }
- APIのノート:
- この
Inflater
によって使用されるリソースを解放するには、end()
メソッドを明示的に呼び出す必要があります。 サブクラスは、サブクラスによって獲得されたリソースのクリーンアップを担当します。 クリーンアップを実行するためにObject.finalize()
をオーバーライドするサブクラスは、Cleaner
などの代替クリーンアップ・メカニズムを使用し、オーバーライドするfinalize
メソッドを削除するように変更する必要があります。 - 導入されたバージョン:
- 1.1
- 関連項目:
-
コンストラクタのサマリー
-
メソッドのサマリー
修飾子と型メソッド説明void
end()
デコンプレッサを閉じ、圧縮解除された入力をすべて破棄します。boolean
finished()
圧縮データ・ストリームの最後に達した場合にtrueを返します。int
getAdler()
圧縮解除データのADLER-32値を返します。long
これまでに入力された、圧縮されたバイトの総数を返します。long
これまでに出力された、圧縮解除されたバイトの総数を返します。int
入力バッファに残っているバイトの総数を返します。int
これまでに入力された、圧縮されたバイトの総数を返します。int
これまでに出力された、圧縮解除されたバイトの総数を返します。int
inflate
(byte[] output) 指定されたバッファにバイトを圧縮解除します。int
inflate
(byte[] output, int off, int len) 指定されたバッファにバイトを圧縮解除します。int
inflate
(ByteBuffer output) 指定されたバッファにバイトを圧縮解除します。boolean
プリセット・ディクショナリが圧縮解除に必要な場合にtrueを返します。boolean
入力バッファにデータが残っていない場合にtrueを返します。void
reset()
新しい入力データ・セットが処理できるようにインフレータをリセットします。void
setDictionary
(byte[] dictionary) プリセット・ディクショナリを指定のバイト配列に設定します。void
setDictionary
(byte[] dictionary, int off, int len) プリセット・ディクショナリを指定のバイト配列に設定します。void
setDictionary
(ByteBuffer dictionary) リセット・ディクショナリを指定されたバッファのバイトに設定します。void
setInput
(byte[] input) 圧縮解除のための入力データを設定します。void
setInput
(byte[] input, int off, int len) 圧縮解除のための入力データを設定します。void
setInput
(ByteBuffer input) 圧縮解除のための入力データを設定します。
-
コンストラクタの詳細
-
Inflater
public Inflater(boolean nowrap) 新しいデコンプレッサを作成します。 パラメータnowrapがtrueの場合は、ZLIBヘッダーおよびチェックサム・フィールドは使用されません。 これによって、GZIPとPKZIPの両方で使用される圧縮形式との互換性が確保されます。ノート: nowrapオプションを使用する場合は、入力として特別な「ダミー」バイトを指定する必要があります。 これは、最適化を行うためにZLIBネイティブ・ライブラリで必要となります。
- パラメータ:
nowrap
- trueの場合はGZIP互換の圧縮をサポート
-
Inflater
public Inflater()新しいデコンプレッサを作成します。
-
-
メソッドの詳細
-
setInput
public void setInput(byte[] input, int off, int len) 圧縮解除のための入力データを設定します。needsInput()
がtrueを返し、さらに多くの入力データが必要であることを示す場合は常に、setInput()
メソッドの1つをコールする必要があります。- パラメータ:
input
- 入力データ・バイトoff
- 入力データの開始オフセットlen
- 入力データの長さ- 関連項目:
-
setInput
public void setInput(byte[] input) 圧縮解除のための入力データを設定します。needsInput()
がtrueを返し、さらに多くの入力データが必要であることを示す場合は常に、setInput()
メソッドの1つをコールする必要があります。- パラメータ:
input
- 入力データ・バイト- 関連項目:
-
setInput
public void setInput(ByteBuffer input) 圧縮解除のための入力データを設定します。needsInput()
がtrueを返し、さらに多くの入力データが必要であることを示す場合は常に、setInput()
メソッドの1つをコールする必要があります。指定されたバッファ位置は、バッファ制限まで、処理中の操作が実行されると拡張されます。 入力バッファは、あらゆる操作間で(再請求済)を変更できます。変更することは、新規バッファを作成してこのメソッドで設定することと同じです。
入出力操作と同時に入力バッファの内容、位置または制限を変更すると、予期しない操作結果や操作失敗などの未定義の動作が発生します。
- パラメータ:
input
- 入力データ・バイト- 導入されたバージョン:
- 11
- 関連項目:
-
setDictionary
public void setDictionary(byte[] dictionary, int off, int len) プリセット・ディクショナリを指定のバイト配列に設定します。 inflate()が0を返す場合、またはneedsDictionary()がプリセット・ディクショナリを必要とすることを示すtrueを返す場合は、このメソッドを呼び出す必要があります。 getAdler()メソッドを使用して必要なディクショナリのAdler-32値を取得できます。- パラメータ:
dictionary
- ディクショナリ・データ・バイトoff
- データの開始オフセットlen
- データの長さ- 関連項目:
-
setDictionary
public void setDictionary(byte[] dictionary) プリセット・ディクショナリを指定のバイト配列に設定します。 inflate()が0を返す場合、またはneedsDictionary()がプリセット・ディクショナリを必要とすることを示すtrueを返す場合は、このメソッドを呼び出す必要があります。 getAdler()メソッドを使用して必要なディクショナリのAdler-32値を取得できます。- パラメータ:
dictionary
- ディクショナリ・データ・バイト- 関連項目:
-
setDictionary
public void setDictionary(ByteBuffer dictionary) リセット・ディクショナリを指定されたバッファのバイトに設定します。 inflate()が0を返す場合、またはneedsDictionary()がプリセット・ディクショナリを必要とすることを示すtrueを返す場合は、このメソッドを呼び出す必要があります。 getAdler()メソッドを使用して必要なディクショナリのAdler-32値を取得できます。指定されたbyteバッファのバイトは、このメソッドによって完全に消費されます。 戻ったとき、その位置は制限と等しくなります。
- パラメータ:
dictionary
- ディクショナリ・データ・バイト- 導入されたバージョン:
- 11
- 関連項目:
-
getRemaining
public int getRemaining()入力バッファに残っているバイトの総数を返します。 このメソッドは、圧縮解除が終了したあとに入力バッファに何バイト残っているかを調べるのに使用できます。- 戻り値:
- 入力バッファに残っているバイトの総数
-
needsInput
public boolean needsInput()入力バッファにデータが残っていない場合にtrueを返します。 これを使用して、より多くの入力を提供するために、setInput()
メソッドの1つをコールする必要があるかどうかを判断できます。- 戻り値:
- 入力バッファにデータが残っていない場合はtrue
-
needsDictionary
public boolean needsDictionary()プリセット・ディクショナリが圧縮解除に必要な場合にtrueを返します。- 戻り値:
- プリセット・ディクショナリが圧縮解除に必要な場合はtrue
- 関連項目:
-
finished
public boolean finished()圧縮データ・ストリームの最後に達した場合にtrueを返します。- 戻り値:
- 圧縮データ・ストリームの最後に達した場合はtrue
-
inflate
public int inflate(byte[] output, int off, int len) throws DataFormatException 指定されたバッファにバイトを圧縮解除します。 実際に圧縮解除されたバイト数を返します。 戻り値0は、入力データやプリセット・ライブラリがさらに必要かどうかを判断するためにneedsInput()またはneedsDictionary()を呼び出す必要があることを示します。 後者の場合、getAdler()を使用して、要求されるディクショナリのAdler-32値を取得できます。setInput(ByteBuffer)
メソッドがコールされ、入力にバッファが提供された場合、DataFormatException
がスローされた場合でも、この操作で使用されるバイト数が入力バッファ位置の拡張されます。「残りのバイト数」は、使用される入力バイト数だけ削減されます。
setInput(ByteBuffer)
メソッドがコールされて入力用のバッファが指定された場合、入力バッファ位置は使用バイト数に進みます。これらのバイトの合計と「読み取られた合計バイト数」および「書き込まれた合計バイト数」の値は、例外が発生する前に消費されて生成されたデータの量を反映するために
DataFormatException
がスローされた場合でも更新されます。- パラメータ:
output
- 未圧縮データ用のバッファoff
- データの開始オフセットlen
- 圧縮解除される最大バイト数- 戻り値:
- 圧縮解除される実効バイト数
- 例外:
DataFormatException
- 圧縮データ形式が無効な場合- 関連項目:
-
inflate
public int inflate(byte[] output) throws DataFormatException 指定されたバッファにバイトを圧縮解除します。 実際に圧縮解除されたバイト数を返します。 戻り値0は、入力データやプリセット・ライブラリがさらに必要かどうかを判断するためにneedsInput()またはneedsDictionary()を呼び出す必要があることを示します。 後者の場合、getAdler()を使用して、要求されるディクショナリのAdler-32値を取得できます。「残りのバイト数」は、使用される入力バイト数だけ削減されます。
setInput(ByteBuffer)
メソッドがコールされて入力用のバッファが指定された場合、入力バッファ位置は使用バイト数に進みます。これらのバイトの合計と「読み取られた合計バイト数」および「書き込まれた合計バイト数」の値は、例外が発生する前に消費されて生成されたデータの量を反映するために
DataFormatException
がスローされた場合でも更新されます。- パラメータ:
output
- 未圧縮データ用のバッファ- 戻り値:
- 圧縮解除される実効バイト数
- 例外:
DataFormatException
- 圧縮データ形式が無効な場合- 関連項目:
-
inflate
public int inflate(ByteBuffer output) throws DataFormatException 指定されたバッファにバイトを圧縮解除します。 実際に圧縮解除されたバイト数を返します。 戻り値0は、入力データやプリセット・ライブラリがさらに必要かどうかを判断するためにneedsInput()またはneedsDictionary()を呼び出す必要があることを示します。 後者の場合、getAdler()を使用して、要求されるディクショナリのAdler-32値を取得できます。成功すると、指定された
output
バイト・バッファの位置が操作によって生成されたバイト数だけ拡大されます。これは、このメソッドによって返された数と同じです。DataFormatException
がスローされた場合でも、output
バッファの位置は拡張されます。「残りのバイト数」は、使用される入力バイト数だけ削減されます。
setInput(ByteBuffer)
メソッドがコールされて入力用のバッファが指定された場合、入力バッファ位置は使用バイト数に進みます。これらのバイトの合計と「読み取られた合計バイト数」および「書き込まれた合計バイト数」の値は、例外が発生する前に消費されて生成されたデータの量を反映するために
DataFormatException
がスローされた場合でも更新されます。- パラメータ:
output
- 未圧縮データ用のバッファ- 戻り値:
- 圧縮解除される実効バイト数
- 例外:
DataFormatException
- 圧縮データ形式が無効な場合ReadOnlyBufferException
- 指定された出力バッファが読取り専用の場合- 導入されたバージョン:
- 11
- 関連項目:
-
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()デコンプレッサを閉じ、圧縮解除された入力をすべて破棄します。 このメソッドは、デコンプレッサが使用されなくなったときに呼び出される必要があります。 このメソッドが呼び出されたあとのInflaterオブジェクトの動作は保証されません。
-