問題タブ [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 - TreeSet オブジェクトを圧縮するときの Java GZipOutputStream StackOverflowError
GZipOutputStream を使用して TreeSet オブジェクトを byte[] 配列に圧縮すると、奇妙な StackOverflowError が発生しました。
圧縮を行うコードは非常に標準的です。
TreeSet オブジェクトにはデータ オブジェクトのコレクションが含まれます。これらのオブジェクトのフィールドはフラットです。つまり、マップ/リスト/セットはありません (いくつかのコレクション フィールドがある場合がありますが、TreeSet が圧縮されているため null になります)。数値、ブール値、および文字列。
いくつかの投稿で、複雑なマップ構造を扱うときに GZIPOutputStream にこの問題があることを読みましたが、それ以上の詳細はありませんでした。
このようなスタック オーバーフロー エラーで GZIP が壊れる傾向があるマップの種類を知っている人はいますか? 私が圧縮しているTreeSetも特に大きいです...エラーは散発的に発生します。私はそれを自己生成することができませんでした.これらのTreeSetがアクティブに使用されている場合(読み取り、追加、およびジッパー)。
java - GZIPOutputStream によって形成された BufferedWriter を介してファイルに書き込まれたバイト数をカウントします
私はBufferedWriter
以下に示すように持っています:
次のようなファイルのクエリを実行せずに、ファイルに書き込まれたバイトを調べたい
それはオーバーヘッドを追加するので、私はそれを望んでいません。
また、私はこれを行うことができません:
圧縮前にサイズを与えるので。
java - ローカルで gzip ファイルを作成せずに GZIPOutputStream で圧縮してアップロードする
でファイルをアップロードする前に、Java でファイルを圧縮しようとしていますGZIPOutputStream
。アップロード用に gzip されたファイルをメモリに保存し、ローカル コンピューターに gzip されたファイルを生成しないようにする方法はありますか?
ありがとう!
java - BufferedOutputStream 複数行 Write in File
作成した関数に少し問題があります。この関数に文字列を与えるたびに、同じファイルの新しい行に保存されるようにしたいのですが、実際には、最後に与えた文字列のみを保存しています。何度も上書きするようなもの 助けが必要
たとえば、BufferedWriter には、それを行うのに役立つ newLine というメソッドがあります。
しかし、GZIPOutputStream クラスを使用したいので、BufferedOutputStream が必要です。
それを行う方法はありますか?ありがとう
java - try-wtth-resources ブロック内で GZIPOutputStream オブジェクトを使用する場合、finish() を呼び出す必要がありますか?
try-with-resources [autoclosable] ブロック内で GZipOutputStream を使用する場合、リソースを使い終わっfinish()
た後に明示的に呼び出す必要がありますか?
java - ファイルの NIO GZIP 圧縮とコピー
私はFileChannel
andを使用して、fromFile からtoFile にFileInputStream
単純なファイルをコピーしていました。File
File
コードは基本的に次のようになります。
とは適切なfromFile
オブジェクトです。ここで、から直接コピーするのではなく、GZIP (Java ライブラリにある) を使用してコンテンツを圧縮し、. また逆に、 から転送するときも同様に解凍したいと思います。toFile
File
fromFile
toFile
toFile
次のような簡単な方法があるのだろうかと思っていました
また
残りのコードはすべて変更されません。これに対する最もクリーンな解決策について何か提案はありますか?
ありがとう..
java - RESTful Web サービスを介したファイルの送信: Base64 エンコーディングと GZip 圧縮
数日以来、RESTful Web サービスでファイルを送受信するプロジェクトである Java をいじっています。これは既存のソフトウェア システムの拡張となるため、追加のライブラリはできるだけ少なくします。このソフトウェア システム内でプロジェクトを実行するには、API に従う必要があります。そして、「拡張機能」を OSGI バンドルとして提供する必要があります。
私のプロジェクトの結果はきびきびと実行する必要があり、場合によってはモバイル デバイスでも実行する必要があるため、ファイルで GZip 圧縮も使用したいと考えています。さらに、REST経由でファイルを送信することについて読んだとき、ファイルの内容をBase64でエンコードし、ファイル名を一緒に送信するのが最善のようです。
これにより、次のクライアント コード サンプルが表示されます: (実際の「拡張子」ではありません)
ログ出力から、この部分は正常に動作しているようです。(最初の 3 行)
サービスでこれを読み取り、デコード、解凍しようとすると、問題が発生します。(ソフトウェア システムの「拡張子」) 上記のログの最後の行に出力されているとおりです。
電話を受けるコードは次のようになります。
私はウェブとスタックオーバーフローを見回しましたが、それは正しいようです。次のような投稿からいくつかのアイデアを得ました: How to convert Java String into byte[]? 成功しないBase64 データ の ストリーム デコード。私が見落とした何かがあるはずです。
サーバーからのログは次のとおりです。
GZip 圧縮をコメントアウトすると、これは問題なく機能します。どんな助けやヒントも大歓迎です。
敬具
java - リクエストボディを圧縮する OkHttp Interceptor を書く
Gzip を使用してリクエスト本文を圧縮するインターセプターを作成しようとしています。
私のサーバーは圧縮されたリクエストをサポートしていないため、application/octet-stream
代わりに Content-Type: gzip
を使用し、リクエスト本文を手動で圧縮します。バックエンドで手動で圧縮解除されます。
機能しません - リクエストが発行されてから 30 秒後に a500 Server Error
が受信されます。サーバーにはタイムアウト例外があります。
私の推測では、gzip メソッドの入力/出力で間違ったことをしたと思います...何かアイデアはありますか?
アプリを停止した場合に更新すると、リクエストは正常に処理されます。これは、アプリがまだ outputBuffer からのデータを待機していることを示していますか?