問題タブ [gzipinputstream]

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.

0 投票する
1 に答える
1403 参照

java - tar.gz フォルダー内のファイルを読み取るパフォーマンスを向上させるにはどうすればよいですか?

tar.gz 形式のフォルダーにある pdf ファイルを正常に読み取ることができました。しかし、私はパフォーマンスの問題に直面しました - 各ファイルサイズが10 - 25 MBの1000以上の小さなpdfファイルを含むtar.gzフォルダーを開くのに時間がかかります.フォルダーの合計サイズは2GBです

解凍ファイルの読み込みのパフォーマンスを向上させるには?

0 投票する
2 に答える
3343 参照

java - GZIP は改行を食べる

文字列を圧縮および解凍するための次のコードがあります。

Windowsでバイト配列に圧縮し、ソケットを介してバイト配列をLinuxに送信し、そこで解凍します。ただし、圧縮を解除すると、改行文字がすべてなくなったようです。
それで、問題はLinuxとWindowsの関係にあると思いました。ただし、それを使用するウィンドウで簡単なプログラムを作成しようとしましたが、改行がまだなくなっていることがわかりました。
何が原因であるかについて、誰かが光を当てることができますか? 説明がわかりません。

0 投票する
1 に答える
8796 参照

java - GZIPInputStream - 破損した GZIP トレーラー

Rails アプリケーションから圧縮された JSON 文字列を取得し、表現を返す前にデータを解凍する静的ヘルパー メソッドがありますString

私は 2 つの JUnit テストを作成しました。1 つは JSON が正しく解析されることをテストするテストで、もう 1 つは長さが 0 より大きい文字列がサーバーから返されるかどうかを判断する基本的なテストです。

問題:テスト スイートを実行すると、最初のテスト メソッドは正常に実行され、もう 1 つのテスト メソッドは失敗し、IOException「破損した GZIP トレーラー」というメッセージが表示されます (以下のコードを参照)。テストを逆の順序で実行すると、「成功した」テストが逆になるため、失敗しているのはテスト自体ではないと判断しました (つまり、何があっても失敗するのは常に 2 番目のテストです)。 2 つのテストのどちらが 2 番目に実行されても構いません)。

これはヘルパー メソッドです。

エラーは、ヘルパー メソッドの下部の行で発生しますwhile((line = reader.readLine()) != null)...。具体的には、 でエラーが発生しますreader.readLine()

そして、2 つのテスト方法:

私はこの質問回答を読みましたが、それが当てはまるとは思いません(または、誤解している可能性があります。そうである場合はお知らせください)。彼らのアプローチを試してみましたが、同じメッセージしか受け取りませんでした。

メソッドは静的であり、作成されるオブジェクトはdoHTTPGetメソッドの本体内で行われるため、何も (ストリーム、接続オブジェクトなど) を再利用する必要はありません。率直に言って、私は困惑しています。

質問:「Corrupt GZIP Trailer」メッセージを生成するヘルパー コードで何か間違ったことをしたり、何らかのオブジェクトの使用方法を誤解したりしましたか? つまり、私のシナリオでこのエラーが発生する原因は何ですか?

いつものように、この質問に抜けているものがあれば教えてください。

編集

これはスタック トレースです。

0 投票する
2 に答える
12551 参照

java - Base64 データのストリーム デコード

base64 でエンコードされた大きなデータがいくつかあります (hadoop ファイルシステムのスナップ ファイルに格納されています)。このデータはもともと gzip されたテキスト データでした。このエンコードされたデータのチャンクを読み取り、デコードして、GZIPOutputStream にフラッシュできる必要があります。

base64 データ全体を配列にロードして Base64.decodeBase64(byte[]) を呼び出す代わりに、これを行う方法についてのアイデアはありますか?

「\r\n」区切り文字まで文字を読み取り、1 行ずつデコードすれば正しいでしょうか? 例:

残念ながら、このアプローチでは人間が読める出力は得られません。理想的には、データの読み取り、デコード、およびストリーミングをストリーミングしたいと考えています。

今、入力ストリームに入れてから gzipout にコピーしようとしています

そして、それは私に java.io.IOException: Corrupt GZIP Trailer を与えます

0 投票する
2 に答える
438 参照

android - Android の GZIPInputStream からの切り捨てられた出力

私は本当に間違ったことをしているに違いない。Android で次のコードを実行すると、ログに例外や問題がなく、切り捨てられたファイル (_items_) が生成されます。OpenJDK 7 で同じコードを実行すると、ファイルが正しく解凍されます。

私はこれを Android エミュレーター (API 18) と Desire HD (Android 2.3.5) で試しましたが、結果は同じでした。

入力ファイル (_items): https://drive.google.com/file/d/0B6M72P2gzYmwaHg4SzRTYnRMOVk/edit?usp=sharing

Android 切り捨て出力ファイル (_items_): https://drive.google.com/file/d/0B6M72P2gzYmwMUZIZ2FEaHNZUFk/edit?usp=sharing

0 投票する
1 に答える
3560 参照

gzipstream - C/C++ を使用して Zlib で文字列を Gzip します

C++ (または C) の gzip を使用して文字列を gzip したいと考えています。できればzlibを使いたいです。

圧縮と解凍にzlibを使用する必要があることを知ったとき、私はそれを数分間グーグルで検索し、すぐにファイルをgzipしてから解凍するプログラムを作成しました. しかし、私は実際にそれを行う必要はありません。ファイルではなく文字列を圧縮および解凍するには、gzip を使用する必要があります。文字列で gzip を使用するための適切なドキュメントはあまり見つかりませんでした。私が見つけたすべての例は、ファイルで動作します。

誰かが私に簡単な例を見せてもらえますか?

前もって感謝します。