public class Deflater extends Object
次に、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
}
Inflater| 修飾子と型 | フィールドと説明 |
|---|---|
static int |
BEST_COMPRESSION
最適な圧縮のための圧縮レベルです。
|
static int |
BEST_SPEED
最高速での圧縮のための圧縮レベルです。
|
static int |
DEFAULT_COMPRESSION
デフォルトの圧縮レベルです。
|
static int |
DEFAULT_STRATEGY
デフォルトの圧縮方法です。
|
static int |
DEFLATED
deflateアルゴリズムのための圧縮メソッド(現在サポートされているのは1つだけ)です。
|
static int |
FILTERED
小さい値がある程度ランダムに分布しているデータに最適な圧縮方法です。
|
static int |
FULL_FLUSH
保留中のすべての出力をフラッシュし、デフレータをリセットするために使用される圧縮フラッシュ・モードです。
|
static int |
HUFFMAN_ONLY
ハフマン符号化だけのための圧縮方法です。
|
static int |
NO_COMPRESSION
圧縮しない場合の圧縮レベルです。
|
static int |
NO_FLUSH
最高の圧縮結果を実現するために使用される圧縮フラッシュ・モードです。
|
static int |
SYNC_FLUSH
保留中のすべての出力をフラッシュするために使用される圧縮フラッシュ・モードで、一部の圧縮アルゴリズムでは圧縮率が低下することがあります。
|
| コンストラクタと説明 |
|---|
Deflater()
デフォルトの圧縮レベルで新しいコンプレッサを作成します。
|
Deflater(int level)
指定された圧縮レベルで新しいコンプレッサを作成します。
|
Deflater(int level, boolean nowrap)
指定された圧縮レベルで新しいコンプレッサを作成します。
|
| 修飾子と型 | メソッドと説明 |
|---|---|
int |
deflate(byte[] b)
入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。
|
int |
deflate(byte[] b, int off, int len)
入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。
|
int |
deflate(byte[] b, int off, int len, int flush)
入力データを圧縮し、指定されたバッファに圧縮されたデータを挿入します。
|
void |
end()
コンプレッサを閉じ、圧縮解除された入力をすべて破棄します。
|
protected void |
finalize()
ガベージ・コレクションが行われたときにコンプレッサを閉じます。
|
void |
finish()
このメソッドが呼び出されると、圧縮が入力バッファの現在の内容で終了する必要があることを示します。
|
boolean |
finished()
圧縮データ出力ストリームの最後に達した場合にtrueを返します。
|
int |
getAdler()
圧縮解除データのADLER-32値を返します。
|
long |
getBytesRead()
これまでに入力された、圧縮解除されたバイトの総数を返します。
|
long |
getBytesWritten()
これまでに出力された、圧縮されたバイトの総数を返します。
|
int |
getTotalIn()
これまでに入力された、圧縮解除されたバイトの総数を返します。
|
int |
getTotalOut()
これまでに出力された、圧縮されたバイトの総数を返します。
|
boolean |
needsInput()
入力データ・バッファが空なので、さらに入力を提供するためにsetInput()を呼び出す必要がある場合に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)
圧縮のための入力データを設定します。
|
void |
setLevel(int level)
圧縮レベルを指定された値に設定します。
|
void |
setStrategy(int strategy)
圧縮方法を指定された値に設定します。
|
public static final int DEFLATED
public static final int NO_COMPRESSION
public static final int BEST_SPEED
public static final int BEST_COMPRESSION
public static final int DEFAULT_COMPRESSION
public static final int FILTERED
public static final int HUFFMAN_ONLY
public static final int DEFAULT_STRATEGY
public static final int NO_FLUSH
deflate(byte[], int, int, int)、定数フィールド値public static final int SYNC_FLUSH
deflate(byte[], int, int, int)、定数フィールド値public static final int FULL_FLUSH
deflate(byte[], int, int, int)、定数フィールド値public Deflater(int level,
boolean nowrap)
level - 圧縮レベル(0 - 9)nowrap - trueの場合はGZIP互換の圧縮を使用public Deflater(int level)
level - 圧縮レベル(0 - 9)public Deflater()
public void setInput(byte[] b,
int off,
int len)
b - 入力データ・バイトoff - データの開始オフセットlen - データの長さneedsInput()public void setInput(byte[] b)
b - 入力データ・バイトneedsInput()public void setDictionary(byte[] b,
int off,
int len)
b - ディクショナリ・データ・バイトoff - データの開始オフセットlen - データの長さInflater.inflate(byte[], int, int), Inflater.getAdler()public void setDictionary(byte[] b)
b - ディクショナリ・データ・バイトInflater.inflate(byte[], int, int), Inflater.getAdler()public void setStrategy(int strategy)
圧縮方法を変更した場合、deflateの次の呼び出しでは、古い方法でこれまで使用可能な入力が圧縮されます(およびフラッシュされることがあります)。新しい方法はその呼び出しの後にのみ有効になります。
strategy - 新しい圧縮方法IllegalArgumentException - 圧縮方法が無効な場合public void setLevel(int level)
圧縮レベルを変更した場合、deflateの次の呼び出しでは、古いレベルでこれまで使用可能な入力が圧縮されます(およびフラッシュされることがあります)。新しいレベルはその呼び出しの後にのみ有効になります。
level - 新しい圧縮レベル(0 - 9)IllegalArgumentException - 圧縮レベルが無効な場合public boolean needsInput()
public void finish()
public boolean finished()
public int deflate(byte[] b,
int off,
int len)
needsInputを呼び出す必要があることを示します。
このメソッドは、その圧縮フラッシュ・モードとしてNO_FLUSHを使用します。形式deflater.deflate(b, off, len)のこのメソッドの呼出しでは、deflater.deflate(b, off, len, Deflater.NO_FLUSH)の呼び出しと同じ結果が得られます。
b - 圧縮データ用のバッファoff - データの開始オフセットlen - 圧縮データの最大バイト数public int deflate(byte[] b)
needsInputを呼び出す必要があることを示します。
このメソッドは、その圧縮フラッシュ・モードとしてNO_FLUSHを使用します。形式deflater.deflate(b)のこのメソッドの呼出しでは、deflater.deflate(b, 0, b.length, Deflater.NO_FLUSH)の呼び出しと同じ結果が得られます。
b - 圧縮データ用のバッファpublic int deflate(byte[] b,
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パラメータともっと大きな出力領域で再度呼び出してください。
b - 圧縮データ用のバッファoff - データの開始オフセットlen - 圧縮データの最大バイト数flush - 圧縮フラッシュ・モードIllegalArgumentException - フラッシュ・モードが無効な場合public int getAdler()
public int getTotalIn()
バイト数はInteger.MAX_VALUEよりも大きくなる場合があるため、この情報を得る場合はgetBytesRead()メソッドの方を優先的に使用してください。
public long getBytesRead()
public int getTotalOut()
バイト数はInteger.MAX_VALUEよりも大きくなる場合があるため、この情報を得る場合はgetBytesWritten()メソッドの方を優先的に使用してください。
public long getBytesWritten()
public void reset()
public void end()
protected void finalize()
finalize、クラス: ObjectWeakReference, PhantomReference バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.