問題タブ [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.
java - gzipで圧縮されたデータをバイト配列で解凍するにはどうすればよいですか?
オブジェクトをパラメータとして受け取るメソッドを持つクラスがあります。このメソッドは、RMIを介して呼び出されます。
MyFileには、バイト配列である「body」と呼ばれるプロパティがあります。
このプロパティは、別のアプリケーションによって解析されたファイルのgzip圧縮されたデータを保持します。
このバイト配列を使用してさらにアクションを実行する前に、このバイト配列を解凍する必要があります。
gzipで圧縮されたデータを解凍する例はすべて、データをディスクに書き込んで物理ファイルを作成することを前提としていますが、実際には作成していません。
どうすればよいですか?
前もって感謝します。
java - GZIPInputStream を 1 行ずつ読み取る
.gz 形式のファイルがあります。このファイルを読み取るための Java クラスは GZIPInputStream です。ただし、このクラスは java の BufferedReader クラスを拡張していません。その結果、ファイルを 1 行ずつ読み取ることができません。私はこのようなものが必要です
私は、JavaのReaderまたはBufferedReaderクラスを拡張し、GZIPInputStreamをその変数の1つとして使用するクラスを作成することを考えています。
しかし、これは私が使用すると機能しません
誰かがどのように進めるかアドバイスできますか..
java - GzipInputstream を作成しようとするたびにクライアント コードが「ランダムに」失敗する
基本的に複数のクライアントに対応するサーバーがあります。私は基本的にgzip(入力/出力)ストリームを使用してクライアントサーバー間でデータを圧縮しています。
多くのクライアントが同時にサーバーにリクエストを送信できるため、各クライアントに対応するスレッドがあります。
現在、私が経験している問題は、サーバーへの接続が確立された後に実行しようとするたびに、「ランダムに」一部のクライアント コードが失敗することです。
私は得るjava.io.EOFException
。
そして、ランダムに言うと、例外で見つけることができるパターンがないことを意味します. リクエストは適切に送信されています (それ以外の場合、クライアントのリクエストに対しては機能しません)。
私はたくさん検索しました..しかし、何も見つかりませんでした.. :(
上記の問題に関する指針はありますか?
新しい接続を受け入れ、新しいスレッドを生成するサーバー コード。
スレッド内のコード..
取得した例外のスタックトレースは次のとおりです。
java - JavaでのPHPのgzuncompress関数?
PHPのgzcompress()関数を使用して文字列を圧縮しています。
http://us2.php.net/manual/en/function.gzcompress.php
PHP圧縮関数から出力を取得し、Javaで文字列を解凍したいと思います。誰かが私を正しい道に送ることができますか?
本当にありがとう!
c# - C# から Java: Base64String、MemoryStream、GZipStream
.NET で gzip された Base64 文字列があり、それを Java の文字列に変換したいと考えています。特に、C# 構文に相当する Java を探しています。
- Convert.FromBase64String
- メモリーストリーム
- GZipStream
変換したいメソッドは次のとおりです。
任意のポインタをいただければ幸いです。
java-me - J2ME の GZIPInputStream 実装
利用可能な J2ME 用の GZIPInputStream 実装はありますか。Apache スタイルのライセンスを希望します
java - GZIPされたデータのInputStreamから解凍されたデータのInputStreamを取得するにはどうすればよいですか?
gzipで圧縮されたファイルを返すサービスを呼び出します。javax.activation.DataHandler.getInputStream();
応答からのInputStream(提供)としてデータを取得します。
私がやりたいのは、ディスクに何も書き込まずに、アーカイブにあるファイル内の解凍されたデータのInputStreamを取得することです。この場合の圧縮ファイルはjavax.xml.bind.Unmarshaller
、InputStreamを使用してアンマーシャリングしようとしているxmlドキュメントです。
現在、InputStreamをOutputStreamに書き込もうとしています(データを解凍します)。その後、InputStreamに書き戻す必要があります。まだ機能していないので、もっと良い(そう願っています)アプローチがあるかどうかを確認したいと思いました。
最初のInputStreamをディスクに書き込んでgzファイルを取得し、次にそのファイルを読み取り、圧縮ファイルを取り出してそこから移動することができますが、すべてをメモリに保持することは可能です。
更新1:これが私の現在の例です(機能していません-「GZIP形式ではありません」という例外が発生します):
ByteArrayOutputStreamに書き込む代わりに、初めてFileOutputStreamに書き込むと、圧縮ファイル(手動で開いてxmlファイルを取得できます)を取得し、サービス(eBay)がgzipファイルであると言っているので' m「GZIP形式ではありません」というエラーが表示される理由がわかりません。
更新2:少し違うことを試しました-同じエラー(「GZIP形式ではありません」)。うわー、私はちょうどその括弧をセミコロンで終わらせようとしました。とにかく、これが私の2回目の試みですが、それでも機能しません。
java - Java で GZIPInputStream を使用してマルチコア プロセッサを使用するにはどうすればよいですか?
私は自分のプログラムで GZIPInputStream を使用していますが、Java でプログラムを並行して実行できれば、パフォーマンスが向上することはわかっています。
一般に、標準 VM を多数のコアで実行するためのコマンドライン オプションはありますか? そのまま1本で動いています。
ありがとう!
編集
Windows XP で普通の Java SE 6 update 17 を実行しています。
GZIPInputStream を別のスレッドに配置すると、明示的に役立ちますか? いいえ!GZIPInputStream を別のスレッドに配置しないでください。マルチスレッド I/O は使用しないでください。
編集 2
同じディスクに読み書きしているので、I / Oがボトルネックだと思います...
一般的に、GZIPInputStream を高速化する方法はありますか? または、並行して実行される GZIPInputStream の代替品ですか?
私が使用した編集3 コードスニペット:
android - Android: ASSETS フォルダー内の GZIP ファイルを読み取る
「ASSETS」(または resources/raw) フォルダーにある Android の GZIP ファイルをどのように読み取ることができますか?
次のコードを試しましたが、ストリーム サイズは常に 1 です。
何らかの理由で、サイズは常に 1 です。しかし、ファイルを GZIP しなければ、問題なく動作します。
注: Android 1.5 の使用
c# - GZIPJavaと.NET
次のJavaコードを使用して、bytes[]をGZIPとの間で圧縮/解凍します。最初のテキストバイトからgzipバイト:
次に、圧縮バイトから非圧縮バイトに逆方向に進むメソッド:
gzipファイルに書き出していないので効果があると思いますか?
また、標準のC#関数では、BitConverterが最初の4バイトを読み取り、MemoryStream Write関数が開始点4、入力バッファー長-4で呼び出されることに気付きました。これはヘッダーの有効性に影響しますか?
ジム