java.util.zip.Deflaterのdeflateメソッドを使用する場合、byte []を引数として指定する必要があります。バイト[]をどのくらい大きくする必要がありますか?圧縮データが圧縮されていないデータよりも小さくなるという保証はありません。私は一緒に行かなければならない入力の特定の%がありますか? 現在、私は入力の2倍の大きさにしていますJava圧縮サイズの出力byteArray
5
A
答えて
8
deflate
を呼び出した後、まだ出力が多いかどうかを確認するためにfinished
を呼び出してください。例えば:あなたはちょうどあなたがByteArrayOutputStreamを使用することができますメモリ内のバイトのすべてを収集する場合
byte[] buffer = new byte[BUFFER_SIZE];
while (!deflater.finished()) {
int n = deflater.deflate(buffer);
// deal with the n bytes in out here
}
。例:
byte[] buffer = new byte[BUFFER_SIZE];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
while (!deflater.finished()) {
int n = deflater.deflate(buffer);
baos.write(buffer, 0, n);
}
return baos.toByteArray();
6
なぜJavaは「デフレータ」としてクラスのスペルが間違っていますか?言葉は「デフレーター」です。まあ!申し訳ありませんが、私の胸からそれを取得する必要がありました。
前述のように、圧縮からすべての出力を得るまでは、deflate
を呼び出し続けることが予想されます。しかし、あなたがの場合、実際にを1回の呼び出しで実行したい場合は、デフレートがデータを展開できる量に制限があります。 zlibには、Javaが残念なことにその上限を提供するdeflateBound()
と呼ばれる機能があります。あなたはここにコピーされた該当する行と、その関数からバインド保守を使用することができます。
complen = sourceLen +
((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
関連する問題
- 1. AS3 - 圧縮ByteArray
- 2. 非対称Javaの圧縮
- 3. JAVAのESRIジオメトリ圧縮アルゴリズム
- 4. MJPEGとMPEG-4のサイズ/圧縮
- 5. 圧縮とFTS for Javaベストデータベース
- 6. WIX/MSIパッケージの圧縮ファイル(圧縮EXE)はMSIサイズを2倍に増やす
- 7. 無効なエントリ圧縮されたサイズ
- 8. Symfonyの特定のアクションの出力を圧縮しますか?
- 9. RailsとApacheで出力を圧縮する最良の方法
- 10. rails(またはapache/passenger)からのhtmlテキスト出力圧縮
- 11. データ圧縮と画像圧縮の差
- 12. Apache mod_deflateがjson出力を圧縮していない
- 13. PHPでhtml出力を圧縮するには?
- 14. Symfony2でhtml出力を圧縮するには?
- 15. Java - 異なる圧縮ファイルの解凍
- 16. Javaで大きなサイズのデータを圧縮および解凍するには?
- 17. 圧縮された(圧縮された)フォルダが無効ですJava
- 18. ビットマップデータの圧縮
- 19. ウェブページの圧縮
- 20. node.jsの圧縮
- 21. Javaでバイナリデータを圧縮する
- 22. 圧縮ヘッダーを設定し、圧縮してヘッダーを圧縮しますか?
- 23. PVRテクスチャ圧縮タイル(露出エッジコンテキスト)
- 24. boost :: iostreamsで圧縮ファイルを抽出
- 25. なぜフォルダを圧縮してもサイズが圧縮されないのですか?
- 26. PHP圧縮オプション
- 27. Asp.netパス圧縮
- 28. LZWデータ圧縮
- 29. Android HttpURLConnection:gzip圧縮
- 30. データ圧縮ビデオチュートリアル?
そして、あなたは、1つの巨大なバイト配列で終わるループの外側 'ByteArrayOutputStream'を作成し、それに追加したい場合それぞれの繰り返しは 'bos.append(out、0、n)' –
と答えました。私はかなりそれを得ることはありません... 入力全体が圧縮されるまでdeflate()を何度も呼び出す必要がありますか? BUFFER_SIZEをどのように設定する必要がありますか? これについて説明するチュートリアルなどがありますか? ありがとう – Clox
何らかの競合状態があったと思います。私が投稿した2番目の例のスニペットとまったく同じです。 :-) –