問題タブ [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 投票する
8 に答える
70656 参照

java - GZIPInputStreamから文字列

HTTP応答のgzip圧縮された本文をプレーンテキストに変換しようとしています。この応答のバイト配列を取得して、ByteArrayInputStreamに変換しました。次に、これをGZIPInputStreamに変換しました。ここで、GZIPInputStreamを読み取り、最終的な解凍されたHTTP応答本文をプレーンテキスト文字列として保存します。

このコードは、最終的に解凍されたコンテンツをOutputStreamに格納しますが、コンテンツを文字列として格納したいと思います。

0 投票する
3 に答える
6206 参照

java - Android: PHP gzcompress() で圧縮された文字列を解凍します

PHP gzcompress() 関数によって圧縮された文字列を解凍するにはどうすればよいですか?

完全な例はありますか?

どうも

私は今このようにそれを試しました:

しかし、PHP gzcompress (-ed) 文字列を解凍しようとすると機能しません。

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

android - GZIPInputStream は Android 2.3 で IOException で失敗しますが、以前のすべてのリリースでは正常に動作しますか?

今日、携帯電話を Gingerbread (2.3.2) にアップデートし、開発したアプリを起動したところ、データの読み込みに失敗しました。アプリは、1.6 から 2.2 までテストした Android の他のすべてのバージョンで正常に動作しますが、Gingerbread で IOException が発生します。GZipInputStream または URL.openStream() で何かが変更されたかどうかは誰にもわかりませんか?

問題のあるコードは次のようなものです。

1.6 から 2.2 では、このコードは正常に機能します。2.3 では、マジック ブロックが正しくないというメッセージとともに IOException が発生します。MIME タイプまたはこのデータの何かを台無しにしている openStream で何かが変更されたと想定しています。openStream は HTTP 接続を処理する最も信頼できる方法ではないという他の場所を読んだので、これは接続コードを作り直す良い言い訳になるかもしれません。

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

java - これは Java GZipInputStream クラスのバグですか?

gzip デコード コードの一部が、破損したデータの検出に失敗しているように見えることに気付きました。問題を Java GZipInputStream クラスまでたどったと思います。特に、単一の「読み取り」呼び出しでストリーム全体を読み取ると、破損したデータが IOException をトリガーしないようです。同じ破損データに対して 2 回以上の呼び出しでストリームを読み取ると、例外がトリガーされます。

バグ レポートの提出を検討する前に、ここのコミュニティがどう考えているかを知りたかったのです。

編集: 最後の例では、私が問題であると認識しているものを明確に示していなかったため、例を変更しました。この新しい例では、10 バイトのバッファーが gzip され、gzip されたバッファーの 1 バイトが変更されてから unzip されます。「GZipInputStream.read」を呼び出すと、読み取ったバイト数として 10 が返されます。これは、10 バイトのバッファーに期待される値です。それにもかかわらず、解凍されたバッファは元のものとは異なります (破損のため)。例外はスローされません。読み取り後に「available」を呼び出すと、EOF に達した場合の「0」ではなく「1」が返されることに注意してください。

ソースは次のとおりです。

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

java - 大きな gzip データ ファイルを HDFS にアップロードする

gzip で圧縮された大きなテキスト データ ファイル (~ 60 GB) を HDFS にアップロードするユース ケースがあります。

以下の私のコードは、これらのファイルを 500 MB のチャンクでアップロードするのに約 2 時間かかります。以下は疑似コードです。誰かがこの時間を短縮するのを手伝ってくれるかどうかを確認していました:

i) int fileFetchBuffer = 500000000; System.out.println("ファイル フェッチ バッファ: " + fileFetchBuffer); int オフセット = 0; int bytesRead = -1;

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

java - BufferedReader の GZIPInputStream ファイルの終わりシーケンス

私は Java BufferedReader オブジェクトを使用して、1,000 行の ASCII テキストを典型的な CSV 形式で含む有効な GZIP アーカイブを指す GZIPInputStream を 1 行ずつ読み取ります。コードは次のようになります。

file は、アーカイブを指す実際の File オブジェクトです。

私は呼び出してすべてのファイルを読みました

リーダーは期待どおりにファイルを調べますが、最後に行 #1000 をバイパスし、もう 1 行読み取ります (つまり、ループの終了後にカウント = 1001)。

最後の行でline.length()を呼び出すと、多数 (4,000 以上) の文字が報告され、それらはすべて印刷できません ( Character.getNumericValue()は -1 を返します)。

実際、line.getBytes()を実行すると、結果の byte[] 配列には同じ数の NULL 文字 ('\0') が含まれます。

これは BufferedReader のバグのように見えますか?

いずれにしても、この動作を回避するための回避策を提案してもらえますか?

編集:さらに奇妙な動作: 読み取られる最初の行には、ファイル名、いくつかの NULL 文字 ('\0')、および行のユーザー名とグループ名がプレフィックスとして付けられ、その後に実際のテキストが続きます!

編集: 少なくとも私のプラットフォームでは、上記の効果を再現する非常に単純なテスト クラスを作成しました。

編集:どうやら誤報のようです。私が取得していたファイルはプレーンな GZIP ではなく、tar された GZIP であったため、これで説明できます。さらにテストする必要はありません。みんな、ありがとう!

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

java - GZIPInputStream と文字セット

ラテン文字、キリル文字、漢字を含むテキストがあります。私は文字列を(以上bytes[])でGZIPOutputStream圧縮し、GZIPInputStreamで解凍しようとしています。しかし、すべてのキャラクターを元のキャラクターに戻すことはできません。として表示されるものもあります?

UTF-16で十分だと思いました。

何か助けはありますか?

よろしく

これが私のコードです:

0 投票する
8 に答える
6967 参照

java - このGZIPInputStreamの非圧縮サイズを取得しますか?

私はGZIPInputStream別のものから構築したものを持っていByteArrayInputStreamます。gzipデータの元の(圧縮されていない)長さを知りたい。の最後まで読んでGZIPInputStream数を数えることはできますが、時間とCPUの浪費になります。読む前にサイズを知りたいのですが。

ZipEntry.getSize()次のような同様の方法はありますかGZIPInputStream

public long getSize ()
以来: APIレベル1
このZipEntryの非圧縮サイズを取得します。

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

java - GZIPInputStream から最後の *n* 行を読み取る

zip内の巨大なtxtファイルを読んでいます。

ファイルの最後のn 行を読み取る必要があります。

eofまでreadlineなしでそれを行うことは可能ですか?