3

バイナリオブジェクト(内部にいくつかのコレクションを持つJavaクラス)をKey-Valueストレージに格納する必要があります。値のサイズ制限は4Kです。XStreamベースのシリアライザーとデシリアライザーを作成したので、クラスメンバーの入力が完了したら、文字列またはファイルにシリアル化できます。最悪の場合、シリアル化された文字列/ファイルサイズは約30Kです。私は良好な圧縮率を達成するように管理しているので、圧縮後のファイルは約2Kであり、これは法案に適合します。

私の質問:次のような便利なJava API \ library\techniqueはありますか。

  1. 文字列を圧縮し、圧縮されたオブジェクトをシリアル化します。
  2. 以前に圧縮されたオブジェクトを解凍し、そこから通常の文字列を作成します

後で圧縮するために、シリアル化されたオブジェクトをファイルに中間ストレージする必要のないワンライナーを探しています。

あなたの助けに感謝!

4

1 に答える 1

1

GZIPOutputStream文字列を圧縮するためにを試してください:

ByteArrayOutputStream out = new ByteArrayOutputStream();
Writer writer = new BufferedWriter(new OutputStreamWriter(new GZIPOutputStream(out)));
writer.write(string);
byte[] zipped = out.toByteArray();

そして再び解凍するには:

ByteArrayInputStream in = new ByteArrayInputStream(zipped);
BufferedReader reader = new BufferedReader(new InputStreamReader(new GZIPInputStream(in)));
string = reader.readLine();
于 2012-06-12T07:45:45.743 に答える