問題タブ [gzipoutputstream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - GzipOutputStreamとBufferedOutputStreamをどの順序で使用する必要がありますか
誰かが私が次のようなことをすべきかどうかを勧めることができますか?
また
どちらがより効率的ですか?BufferedOutputStreamを使用する必要がありますか?
java - Java で GZIPOutputStream を強制的にフラッシュする
GZIPOutputStream をフラッシュする (強制的に圧縮してデータを送信する) 必要があるプログラムに取り組んでいます。問題は、GZIPOutputStream のフラッシュ メソッドが期待どおりに機能せず (圧縮を強制してデータを送信する)、代わりに Stream が効率的なデータ圧縮のためにさらにデータを待機することです。
finish を呼び出すと、データは圧縮され、出力ストリームを介して送信されますが、GZIPOutputStream (基になるストリームではない) が閉じられるため、新しい GZIPOutputStream を作成するまでデータを書き込むことができず、時間とパフォーマンスが犠牲になります。
誰でもこれを手伝ってくれることを願っています。
よろしくお願いします。
android - Android の GZip
GZip を使用して Android でファイルを圧縮および解凍する方法。私にとって大きな助けになるように、いくつかの参考文献を提供してください。
前もって感謝します
java - GZipOutputStream と appengine
AppEngine で Java サーブレットを作成しています。このサーブレットは png 画像を生成します。応答を「gzip」したいと思います。私はこのようにします:
しかし、開発サーバーでは問題ありません.pngは正常に表示され、応答はgzipされています. 次に、本番サーバー(AppEngine)でテストしますが、「壊れた」イメージしか得られません...
私のコードの何が問題なのですか? 開発/本番環境に関連していますか?
もちろん、出力を gzip しなければ、どちらの環境でも問題ありません。
助けてくれてありがとう。
編集:私もこれを試しました:
それも機能しません。
編集 2: 実際、応答は gzip です。「curl theUrl > tmp.gz」でサーブレットをフェッチしてから、「tmp.gz」をガンジップすると、画像は問題ありません。しかし、それを正しく表示できるブラウザはありません:(私のgzipの何が問題なのですか?
java - GZIPOutputStream と DeflaterOutputStream の違いは何ですか?
GZIPOutputStream
の単なるサブクラスですDeflaterOutputStream
が、両方ともインスタンス化できます。いつどちらを使用するのですか? 圧縮は同じですか?
java - GZIPOutputStreamは圧縮中にデータを失うことが知られていますか?
doubleの配列を圧縮するときに、 GZIPOutputStreamで非常に奇妙な問題が発生します。57番目の要素で、データをリロードすると小さな不一致が発生します。
1900と2000は、2つの異なるダブルのセットです。左の値は元の値です。
GZIPなしで単純なFileOutputStreamを使用すると、問題は発生しません。なんで?GZIP出力ストリームは情報を失うことが知られていますか?
編集
データの読み取りと書き込みの方法は次のとおりです。
android - GZIPOutputStream を使用した文字列の圧縮
文字列値を圧縮したい。.net
これらの文字列値は、圧縮された文字列と同じである必要があります。
Decompressメソッドを作成しましたが、圧縮された文字列をそれに送信すると.net
、正しく機能します。しかし、Compressメソッドは正しく機能しません。
For example when I send "BQAAAB+LCAAAAAAABADtvQdgHEmWJSYvbcp7f0r1StfgdKEIgGATJNiQQBDswYjN5pLsHWlHIymrKoHKZVZlXWYWQMztnbz33nvvvffee++997o7nU4n99//P1xmZAFs9s5K2smeIYCqyB8/fnwfPyLmeVlW/w+GphA2BQAAAA==" to Decompress method It returns the string "Hello", but when I send "Hello" to Compress method It returns "H4sIAAAAAAAAAMtIzcnJBwCGphA2BQAAAA= =.
Compressメソッドの問題は何ですか????
java - JavaはGZIPOutputStreamとByteArrayOutputStreamを一緒にラップします - 私は何が間違っていますか?
Main.java
CompressedOutputStream.java
したがって、GZIPOutputStream と ByteArrayOutputStream を結合しようとするこのコードがあります。
何らかの理由で、私が得ているのは同じ10バイトだけです。
この出力の取得:
圧縮されたデータの長さ (これまで) は 10 バイトです
圧縮されたデータの合計の長さは 10 バイト
です データの CRC32 は 4550d94d です
write() を呼び出すと、最終的に抽象関数になるようです。つまり、どこにも到達せず、何も書き込まれません。
オンザフライで書き込み、圧縮し、後で圧縮されたバイトを取得できるようにしたい。
ここで何が欠けていますか?些細なことのようですが、そうではありません。
編集#1:私の最終目標
明確にするために:最後に必要なのは、シーケンスではなくチャンクで書き込むメモリ内バッファだけであり、Xバイトに達した時点でこれらの圧縮およびチェックサムされたバイトを取得できます(標準のJavaストリームではなく、どこかに書き込むため)。
java - Java: GZIPOutputStream のデフレーターに setDictionary を使用すると CRC エラーが発生する
標準入力からデータのストリームを取得し、一度に 128 バイト ブロックずつ圧縮してから、標準出力に出力しようとしています。(例: "cat file.txt | java Dict | gzip -d | cmp file.txt"。ここで、file.txt には ASCII 文字が含まれているだけです。)
また、後続の各ブロックに対して、前の 128 バイト ブロックの末尾から取得した 32 バイトの辞書を使用する必要があります。(最初のブロックは、独自の最初の 32 バイトを辞書として使用します。) 辞書をまったく設定しない場合、圧縮は正常に機能します。ただし、ディクショナリを設定すると、gzip でデータを解凍しようとすると、「gzip: stdin: 無効な圧縮データ--crc エラー」というエラーが表示されます。
コードのいくつかの部分を追加/変更しようとしましたが、これまで何も機能せず、Google で解決策を見つけることができませんでした。
私はもう試した...
- コードの下部にある「def.setDictionary(b)」の前に「def.reset()」を追加しても機能しません。
- 最初のブロックの後のブロックの辞書を設定するだけでは機能しません。(最初のブロックには辞書を使用しません。)
- compression.write(input, 0, bytesRead) の前後に「input」配列を指定して updateCRC を呼び出しても機能しません。
何か提案をいただければ幸いです - 私が見逃している、または間違っていることが明らかなことはありますか?
これは私の Dict.java ファイルにあるものです: