モジュール java.base
パッケージ 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
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      Inflater​()
      新しいデコンプレッサを作成します。
      Inflater​(boolean nowrap)
      新しいデコンプレッサを作成します。
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 具象メソッド 非推奨のメソッド 
      修飾子と型 メソッド 説明
      void end​()
      デコンプレッサを閉じ、圧縮解除された入力をすべて破棄します。
      protected void finalize​()
      非推奨。 
      finalizeメソッドは推奨されていません。 クリーンアップを実行するためにfinalizeをオーバーライドするサブクラスは、代替クリーンアップ・メカニズムを使用し、オーバーライドするfinalizeメソッドを削除するように変更する必要があります。 finalizeメソッドをオーバーライドする場合、実装では、super.finalize()Object.finalize()の説明に従って呼び出されることを明示的に確認する必要があります。 移行オプションの詳細については、Object.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)
      圧縮解除のための入力データを設定します。
    • コンストラクタの詳細

      • 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