1

ファイルに保存したい文字列オブジェクトがあり、それがプレーンテキストとして保存されるかバイナリとして保存されるかは気にしません。プレーンテキストとして保存しようとしましたが、約27バイトでした。次に試しObjectOutputStreamてみたところ、24バイトでした。String オブジェクトをファイルに保存するより良い方法はありますか? 文字列は 189:25:600:-324324214& であり、何千もの文字列を持つ予定です。それが私がそれを圧縮したい理由です。もちろん、各文字列は少し異なります

4

2 に答える 2

2

以下は、圧縮に使用するいくつかのオプションです。

  1. GZIPOutputStream (「gzip ラッパーでのデフレート」)
  2. DeflaterOutputStream ("plain deflate"、gzip または zip "wrappers" よりも推奨) 標準
  3. LZMA Java 実装
  4. jZlib
  5. LZO-Java
  6. Lz4-java および LZ4-HC (妥当な圧縮率で高速な Lz4、LZ4-HC は高圧縮用)
  7. XZ (LZMA2 圧縮アルゴリズムを組み込み)
  8. snappy-java (LZ77 のアイデアに基づいて Google が開発した JNI を使用)

さて、私は今まで1、2、4、および7しか使用していません:)。XZ を使用することは私には合理的で、高速で圧縮率が高く、非常に使いやすいと思われます。

XZOutputStream out = new XZOutputStream(outstream, LZMA2Options);
InputStream in = new XZInputStream(anInputstream);
于 2013-10-06T19:03:40.847 に答える
2

aを anのFileOutputStream内側にラップして、ファイルを作成します。(配列全体を単一のオブジェクトとして書き込みます。) 次に、 aを an の内側にラップして読み取ります。DeflatorOutputStreamObjectOutputStreamFileInputStreamInflatorInputStreamObjectInputStream

于 2013-10-06T19:05:25.773 に答える