このクラスは、バイト・シーケンスを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);
     compresser.end();
     // 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のノート:
- このDeflaterによって使用されるリソースを解放するには、end()メソッドを明示的に呼び出す必要があります。 サブクラスは、サブクラスによって獲得されたリソースのクリーンアップを担当します。 クリーンアップを実行するためにObject.finalize()をオーバーライドするサブクラスは、Cleanerなどの代替クリーンアップ・メカニズムを使用し、オーバーライドするfinalizeメソッドを削除するように変更する必要があります。
- 導入されたバージョン:
- 1.1
- 関連項目:
- 
フィールドのサマリーフィールド修飾子と型フィールド説明static final int最適な圧縮のための圧縮レベルです。static final int最高速での圧縮のための圧縮レベルです。static final intデフォルトの圧縮レベルです。static final intデフォルトの圧縮方法です。static final intdeflateアルゴリズムのための圧縮メソッド(現在サポートされているのは1つだけ)です。static final int小さい値がある程度ランダムに分布しているデータに最適な圧縮方法です。static final int保留中のすべての出力をフラッシュし、デフレータをリセットするために使用される圧縮フラッシュ・モード。static final intハフマン符号化だけのための圧縮方法です。static final int圧縮しない場合の圧縮レベルです。static final int最高の圧縮結果を実現するために使用される圧縮フラッシュ・モード。static final int保留中のすべての出力をフラッシュするために使用される圧縮フラッシュ・モードで、一部の圧縮アルゴリズムでは圧縮率が低下することがあります。
- 
コンストラクタのサマリーコンストラクタ
- 
メソッドのサマリー修飾子と型メソッド説明intdeflate(byte[] output) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。intdeflate(byte[] output, int off, int len) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。intdeflate(byte[] output, int off, int len, int flush) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。intdeflate(ByteBuffer output) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。intdeflate(ByteBuffer output, int flush) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。voidend()コンプレッサを閉じ、圧縮解除された入力をすべて破棄します。voidfinish()このメソッドが呼び出されると、圧縮が入力バッファの現在の内容で終了する必要があることを示します。booleanfinished()圧縮データ出力ストリームの最後に達した場合にtrueを返します。intgetAdler()圧縮解除データのADLER-32値を返します。longこれまでに入力された、圧縮解除されたバイトの総数を返します。longこれまでに出力された、圧縮されたバイトの総数を返します。intこれまでに入力された、圧縮解除されたバイトの総数を返します。intこれまでに出力された、圧縮されたバイトの総数を返します。boolean入力バッファにデータが残っていない場合にtrueを返します。voidreset()新しい入力データのセットを処理できるようにデフレータをリセットします。voidsetDictionary(byte[] dictionary) 圧縮のためのプリセット・ディクショナリを設定します。voidsetDictionary(byte[] dictionary, int off, int len) 圧縮のためのプリセット・ディクショナリを設定します。voidsetDictionary(ByteBuffer dictionary) 圧縮のためのプリセット・ディクショナリを設定します。voidsetInput(byte[] input) 圧縮のための入力データを設定します。voidsetInput(byte[] input, int off, int len) 圧縮のための入力データを設定します。voidsetInput(ByteBuffer input) 圧縮のための入力データを設定します。voidsetLevel(int level) 圧縮レベルを指定された値に設定します。voidsetStrategy(int strategy) 圧縮方法を指定された値に設定します。
- 
フィールド詳細- 
DEFLATEDpublic static final int DEFLATEDdeflateアルゴリズムのための圧縮メソッド(現在サポートされているのは1つだけ)です。- 関連項目:
 
- 
NO_COMPRESSIONpublic static final int NO_COMPRESSION圧縮しない場合の圧縮レベルです。- 関連項目:
 
- 
BEST_SPEEDpublic static final int BEST_SPEED最高速での圧縮のための圧縮レベルです。- 関連項目:
 
- 
BEST_COMPRESSIONpublic static final int BEST_COMPRESSION最適な圧縮のための圧縮レベルです。- 関連項目:
 
- 
DEFAULT_COMPRESSIONpublic static final int DEFAULT_COMPRESSIONデフォルトの圧縮レベルです。- 関連項目:
 
- 
FILTEREDpublic static final int FILTERED小さい値がある程度ランダムに分布しているデータに最適な圧縮方法です。 ハフマン・コーディングを増やし、文字列マッチングを減らします。- 関連項目:
 
- 
HUFFMAN_ONLYpublic static final int HUFFMAN_ONLYハフマン符号化だけのための圧縮方法です。- 関連項目:
 
- 
DEFAULT_STRATEGYpublic static final int DEFAULT_STRATEGYデフォルトの圧縮方法です。- 関連項目:
 
- 
NO_FLUSHpublic static final int NO_FLUSH最高の圧縮結果を実現するために使用される圧縮フラッシュ・モード。- 導入されたバージョン:
- 1.7
- 関連項目:
 
- 
SYNC_FLUSHpublic static final int SYNC_FLUSH保留中のすべての出力をフラッシュするために使用される圧縮フラッシュ・モードで、一部の圧縮アルゴリズムでは圧縮率が低下することがあります。- 導入されたバージョン:
- 1.7
- 関連項目:
 
- 
FULL_FLUSHpublic static final int FULL_FLUSH保留中のすべての出力をフラッシュし、デフレータをリセットするために使用される圧縮フラッシュ・モード。 このモードを頻繁に使用すると、圧縮率が著しく低下することがあります。- 導入されたバージョン:
- 1.7
- 関連項目:
 
 
- 
- 
コンストラクタの詳細- 
Deflaterpublic Deflater(int level, boolean nowrap) 指定された圧縮レベルで新しいコンプレッサを作成します。 パラメータnowrapがtrueの場合、ZLIBヘッダー・フィールドおよびチェックサム・フィールドは、GZIPおよびPKZIPの両方で使用される圧縮形式のサポートには使用されません。- パラメータ:
- level- 圧縮レベル(0 - 9)
- nowrap- trueの場合はGZIP互換の圧縮を使用
 
- 
Deflaterpublic Deflater(int level) 指定された圧縮レベルで新しいコンプレッサを作成します。 圧縮データはZLIB形式で生成されます。- パラメータ:
- level- 圧縮レベル(0 - 9)
 
- 
Deflaterpublic Deflater()デフォルトの圧縮レベルで新しいコンプレッサを作成します。 圧縮データはZLIB形式で生成されます。
 
- 
- 
メソッドの詳細- 
setInputpublic void setInput(byte[] input, int off, int len) 圧縮のための入力データを設定します。needsInput()がtrueを返し、さらに多くの入力データが必要であることを示す場合は常に、setInput()メソッドの1つをコールする必要があります。- パラメータ:
- input- 入力データ・バイト
- off- データの開始オフセット
- len- データの長さ
- 関連項目:
 
- 
setInputpublic void setInput(byte[] input) 圧縮のための入力データを設定します。needsInput()がtrueを返し、さらに多くの入力データが必要であることを示す場合は常に、setInput()メソッドの1つをコールする必要があります。- パラメータ:
- input- 入力データ・バイト
- 関連項目:
 
- 
setInputpublic void setInput(ByteBuffer input) 圧縮のための入力データを設定します。needsInput()がtrueを返し、さらに多くの入力データが必要であることを示す場合は常に、setInput()メソッドの1つをコールする必要があります。遅延処理が実行されると、指定されたバッファ位置はバッファ制限まで拡張されます。 入力バッファは遅延操作間で(再請求済)を変更できます。変更することは、新規バッファを作成してこのメソッドで設定することと同じです。 入力バッファの内容、位置または制限を遅延操作と同時に変更すると、予期しない動作や操作の失敗などの未定義の動作が発生します。 - パラメータ:
- input- 入力データ・バイト
- 導入されたバージョン:
- 11
- 関連項目:
 
- 
setDictionarypublic void setDictionary(byte[] dictionary, int off, int len) 圧縮のためのプリセット・ディクショナリを設定します。 プリセット・ディクショナリは、履歴バッファがあらかじめ決定できるときに使用されます。 データがあとでInflater.inflate()によって圧縮解除されるときに、Inflater.getAdler()を呼び出して圧縮解除に必要なディクショナリのAdler-32値を取得できます。- パラメータ:
- dictionary- ディクショナリ・データ・バイト
- off- データの開始オフセット
- len- データの長さ
- 関連項目:
 
- 
setDictionarypublic void setDictionary(byte[] dictionary) 圧縮のためのプリセット・ディクショナリを設定します。 プリセット・ディクショナリは、履歴バッファがあらかじめ決定できるときに使用されます。 データがあとでInflater.inflate()によって圧縮解除されるときに、Inflater.getAdler()を呼び出して圧縮解除に必要なディクショナリのAdler-32値を取得できます。- パラメータ:
- dictionary- ディクショナリ・データ・バイト
- 関連項目:
 
- 
setDictionarypublic void setDictionary(ByteBuffer dictionary) 圧縮のためのプリセット・ディクショナリを設定します。 プリセット・ディクショナリは、履歴バッファがあらかじめ決定できるときに使用されます。 データがあとでInflater.inflate()によって圧縮解除されるときに、Inflater.getAdler()を呼び出して圧縮解除に必要なディクショナリのAdler-32値を取得できます。指定されたbyteバッファのバイトは、このメソッドによって完全に消費されます。 戻ったとき、その位置は制限と等しくなります。 - パラメータ:
- dictionary- ディクショナリ・データ・バイト
- 関連項目:
 
- 
setStrategypublic void setStrategy(int strategy) 圧縮方法を指定された値に設定します。圧縮方法を変更した場合、 deflateの次の呼び出しでは、古い方法でこれまで使用可能な入力が圧縮されます(およびフラッシュされることがあります)。新しい方法はその呼び出しの後にのみ有効になります。- パラメータ:
- strategy- 新しい圧縮方法
- 例外:
- IllegalArgumentException- 圧縮方法が無効な場合
 
- 
setLevelpublic void setLevel(int level) 圧縮レベルを指定された値に設定します。圧縮レベルを変更した場合、 deflateの次の呼び出しでは、古いレベルでこれまで使用可能な入力が圧縮されます(およびフラッシュされることがあります)。新しいレベルはその呼び出しの後にのみ有効になります。- パラメータ:
- level- 新しい圧縮レベル(0 - 9)
- 例外:
- IllegalArgumentException- 圧縮レベルが無効な場合
 
- 
needsInputpublic boolean needsInput()入力バッファにデータが残っていない場合にtrueを返します。 これを使用して、より多くの入力を提供するために、setInput()メソッドの1つをコールする必要があるかどうかを判断できます。- 戻り値:
- 入力データ・バッファが空なので、さらに入力を提供するためにsetInput()を呼び出す必要がある場合はtrue
 
- 
finishpublic void finish()このメソッドが呼び出されると、圧縮が入力バッファの現在の内容で終了する必要があることを示します。
- 
finishedpublic boolean finished()圧縮データ出力ストリームの最後に達した場合にtrueを返します。- 戻り値:
- 圧縮データ出力ストリームの最後に達した場合はtrue
 
- 
deflatepublic int deflate(byte[] output, int off, int len) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。 実際に圧縮されたデータのバイト数を返します。 戻り値0は、入力データがさらに必要かどうかを判断するためにneedsInputを呼び出す必要があることを示します。このメソッドは、その圧縮フラッシュ・モードとして NO_FLUSHを使用します。 形式deflater.deflate(b, off, len)のこのメソッドの呼出しでは、deflater.deflate(b, off, len, Deflater.NO_FLUSH)の呼び出しと同じ結果が得られます。- パラメータ:
- output- 圧縮データ用のバッファ
- off- データの開始オフセット
- len- 圧縮データの最大バイト数
- 戻り値:
- 出力バッファに書き込まれた圧縮データの実際のバイト数
 
- 
deflatepublic int deflate(byte[] output) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。 実際に圧縮されたデータのバイト数を返します。 戻り値0は、入力データがさらに必要かどうかを判断するためにneedsInputを呼び出す必要があることを示します。このメソッドは、その圧縮フラッシュ・モードとして NO_FLUSHを使用します。 形式deflater.deflate(b)のこのメソッドの呼出しでは、deflater.deflate(b, 0, b.length, Deflater.NO_FLUSH)の呼び出しと同じ結果が得られます。- パラメータ:
- output- 圧縮データ用のバッファ
- 戻り値:
- 出力バッファに書き込まれた圧縮データの実際のバイト数
 
- 
deflatepublic int deflate(ByteBuffer output) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。 実際に圧縮されたデータのバイト数を返します。 戻り値0は、入力データがさらに必要かどうかを判断するためにneedsInputを呼び出す必要があることを示します。このメソッドは、その圧縮フラッシュ・モードとして NO_FLUSHを使用します。deflater.deflate(output)形式のこのメソッドを呼び出すと、deflater.deflate(output, Deflater.NO_FLUSH)の呼出しと同じ結果が得られます。- パラメータ:
- output- 圧縮データ用のバッファ
- 戻り値:
- 出力バッファに書き込まれた圧縮データの実際のバイト数
- 例外:
- ReadOnlyBufferException- 指定された出力バッファが読取り専用の場合
- 導入されたバージョン:
- 11
 
- 
deflatepublic int deflate(byte[] output, int off, int len, int flush) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。 実際に圧縮されたデータのバイト数を返します。圧縮フラッシュ・モードは、次の3つのモードのいずれかになります。 - NO_FLUSH: 最高の圧縮を達成するために、デフレータが出力を生成するまでに蓄積されるデータの量を決定できるようにします(通常の使用シナリオで使用する)。 このフラッシュ・モードでの戻り値0は、入力データがさらに必要かどうかを判断するために- needsInput()を呼び出すべきであることを示します。
- SYNC_FLUSH: 圧縮されたデータに機能するインフレータがそれまでに使用可能なすべての入力データを取得できるようにするため、デフレータのすべての保留中の出力が指定された出力バッファにフラッシュされます(特に、- needsInput()は十分な出力スペースが提供されている場合、この呼出しのあとに- trueを返す)。- SYNC_FLUSHを使用してフラッシュすると、一部の圧縮アルゴリズムで圧縮率が低下することがあるため、これは必要な場合にのみ使用してください。
- FULL_FLUSH:- SYNC_FLUSHと同じように、すべての保留中の出力がフラッシュされます。 圧縮状態がリセットされるため、圧縮された出力データに機能するインフレータは、前の圧縮データが破損したか、ランダム・アクセスが要求されている場合に、このポイントから再開できます。- FULL_FLUSHを頻繁に使用すると、圧縮率が著しく低下することがあります。
 FULL_FLUSHまたはSYNC_FLUSHの例で、戻り値がlen(出力バッファbの使用可能な領域)の場合、このメソッドは同じflushパラメータともっと大きな出力領域で再度呼び出してください。lenが6以上であることを確認して、このメソッドが呼び出されるたびに出力マーカー(5バイト)が出力バッファに繰り返し出力されないようにしてください。setInput(ByteBuffer)メソッドがコールされ、入力にバッファが提供された場合、入力バッファの位置は、この操作で消費されるバイト数だけ増加します。- パラメータ:
- output- 圧縮データ用のバッファ
- off- データの開始オフセット
- len- 圧縮データの最大バイト数
- flush- 圧縮フラッシュ・モード
- 戻り値:
- 出力バッファに書き込まれた圧縮データの実際のバイト数
- 例外:
- IllegalArgumentException- フラッシュ・モードが無効な場合
- 導入されたバージョン:
- 1.7
 
- 
deflatepublic int deflate(ByteBuffer output, int flush) 入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。 実際に圧縮されたデータのバイト数を返します。圧縮フラッシュ・モードは、次の3つのモードのいずれかになります。 - NO_FLUSH: 最高の圧縮を達成するために、デフレータが出力を生成するまでに蓄積されるデータの量を決定できるようにします(通常の使用シナリオで使用する)。 このフラッシュ・モードでの戻り値0は、入力データがさらに必要かどうかを判断するために- needsInput()を呼び出すべきであることを示します。
- SYNC_FLUSH: 圧縮されたデータに機能するインフレータがそれまでに使用可能なすべての入力データを取得できるようにするため、デフレータのすべての保留中の出力が指定された出力バッファにフラッシュされます(特に、- needsInput()は十分な出力スペースが提供されている場合、この呼出しのあとに- trueを返す)。- SYNC_FLUSHを使用してフラッシュすると、一部の圧縮アルゴリズムで圧縮率が低下することがあるため、これは必要な場合にのみ使用してください。
- FULL_FLUSH:- SYNC_FLUSHと同じように、すべての保留中の出力がフラッシュされます。 圧縮状態がリセットされるため、圧縮された出力データに機能するインフレータは、前の圧縮データが破損したか、ランダム・アクセスが要求されている場合に、このポイントから再開できます。- FULL_FLUSHを頻繁に使用すると、圧縮率が著しく低下することがあります。
 FULL_FLUSHまたはSYNC_FLUSHの場合、戻り値がバッファの「残りの領域」と等しい場合は、このメソッドを同じflushパラメータとより多くの出力領域を使用して再度呼び出す必要があります。 このメソッドが呼び出されるたびに、(5バイト)が出力バッファに繰り返し出力されるマーカーを回避するために、バッファには残りの領域が6バイト以上あることを確認してください。成功すると、指定された outputバイト・バッファの位置が操作によって生成されたバイト数だけ拡大されます。これは、このメソッドによって返された数と同じです。setInput(ByteBuffer)メソッドがコールされ、入力にバッファが提供された場合、入力バッファの位置は、この操作で消費されるバイト数だけ増加します。- パラメータ:
- output- 圧縮データ用のバッファ
- flush- 圧縮フラッシュ・モード
- 戻り値:
- 出力バッファに書き込まれた圧縮データの実際のバイト数
- 例外:
- IllegalArgumentException- フラッシュ・モードが無効な場合
- ReadOnlyBufferException- 指定された出力バッファが読取り専用の場合
- 導入されたバージョン:
- 11
 
- 
getAdlerpublic int getAdler()圧縮解除データのADLER-32値を返します。- 戻り値:
- 圧縮解除データのADLER-32値
 
- 
getTotalInpublic int getTotalIn()これまでに入力された、圧縮解除されたバイトの総数を返します。バイト数はInteger.MAX_VALUEよりも大きくなる場合があるため、この情報を得る場合は getBytesRead()メソッドの方を優先的に使用してください。- 戻り値:
- これまでに入力された、圧縮解除されたバイトの総数
 
- 
getBytesReadpublic long getBytesRead()これまでに入力された、圧縮解除されたバイトの総数を返します。- 戻り値:
- これまでに入力された、圧縮解除されたバイトの総数(負ではない値)
- 導入されたバージョン:
- 1.5
 
- 
getTotalOutpublic int getTotalOut()これまでに出力された、圧縮されたバイトの総数を返します。バイト数はInteger.MAX_VALUEよりも大きくなる場合があるため、この情報を得る場合は getBytesWritten()メソッドの方を優先的に使用してください。- 戻り値:
- これまでに出力された、圧縮されたバイトの総数
 
- 
getBytesWrittenpublic long getBytesWritten()これまでに出力された、圧縮されたバイトの総数を返します。- 戻り値:
- これまでに出力された、圧縮されたバイトの総数(負ではない値)
- 導入されたバージョン:
- 1.5
 
- 
resetpublic void reset()新しい入力データのセットを処理できるようにデフレータをリセットします。 現在の圧縮レベルと圧縮方法を保持します。
- 
endpublic void end()コンプレッサを閉じ、圧縮解除された入力をすべて破棄します。 このメソッドは、コンプレッサが使用されなくなったときに呼び出される必要があります。 このメソッドが呼び出されたあとのDeflaterオブジェクトの動作は保証されません。
 
-