問題タブ [gzipstream]
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.
sqlite - 複数の SQLite3 DB を個別に、またはまとめて圧縮することはできますか?
複数のデータベース ファイルを一度に処理して、ユーザーが後で圧縮およびアーカイブするために選択できる一種のキャッシュを作成する C# のプログラムに取り組んでいます。これらのデータベースには SQLite3 を使用しています。ただし、圧縮に関しては、SQLite 接続文字列の場合、有効にできる圧縮用のオプションのパラメーターがあることに気付きました。もう 1 つのオプションは、GZip ストリームを介してすべてのデータベース ファイルを実行することです。最後のオプションは、両方を行うことです。
私が疑問に思っているのは、平均して、圧縮後のディスク使用量が最小になるオプションはどれですか? SQLite はおそらく私よりも独自のデータベース ファイルを圧縮する方法をよく知っていると思いましたが、それはファイルごとに機能します。GZip はファイル全体のデータを利用してファイルをより適切に圧縮できますが、SQLite データベースが既に圧縮されている場合、GZip ストリームがより小さい出力を作成するために使用できるクロス ファイル データが減少する可能性があります。
ruby - Zlib解凍はヘッダーエラーをスローします-Ruby
ストリームAPIからチャンクデータを解凍するためのヘルプが必要です。gzip圧縮を使用してjson出力を返すGnipストリームAPIに接続しています。出力データを解凍しようとすると、「Zlib :: DataError:不正なヘッダーチェック」というエラーがスローされます。
この問題に非常に近い可能性があります-http ://groups.google.com/group/nodejs/browse_thread/thread/32b9ee7f691a68d9
ここに、参考のためにコードスニペットを添付しました。
上記のコードは常に「Zlib::DataError:不正なヘッダーチェック」を返します。gnipはデータチャンクをチャンクごとに返すため、必要なgzip圧縮された出力は最初のチャンクには含まれません。では、gzipで圧縮された出力の必要なチャンクをすべて収集し、それらを解凍して、必要な単一のjson出力を取得するにはどうすればよいですか。
前もって感謝します。Veeraa。
c# - Content-Encoding が空のときに HttpWebResponse が GZip を使用してストリームを解凍しようとするのはなぜですか?
このテーマに関する多くの Q&A を調べた結果、特定の URI からバイトを取得するために次のコードを使用するところまで行き着きました。
ここで、(ファイルを指している) 特定の URI について、デバッグ時に Web 応答の「Content-Encoding」ヘッダーが何もない ("") ことを確認しますが、ストリームから読み取ろうとすると、例外をスローします:
System.IO.InvalidDataException: GZip ヘッダーのマジック ナンバーが正しくありません。GZip ストリームを渡していることを確認してください。
開発ツールで同じ URI をデバッグすると、応答ヘッダーで次のようになります。
コンテンツ エンコーディング:gzip、deflate
だから、本当にどうなるかわかりません。
この例外を回避し、ファイルのバイトを正常に読み取る方法についての手がかりとアイデアはありますか?
ありがとう!
c# - C# でデータを解凍する
私は C# が初めてで、単純な Web サービスを作成しています。zip ファイルを取得し、ファイル システムで解凍します。C# コードでは次のとおりです。
Java コードから zip データを送信します。
C# コードでは、StreamReader からデータを読み取るときに例外が発生します
私が間違っていることは何ですか?
c# - C# .NET GZipStream が一貫性のないファイル長を返す
GZipStream
同じファイルを実行するたびに、ファイル サイズが異なることに気付きました。Windows エクスプローラーでファイルを見ると、size
は異なりますが、Size on disk
は常に同じです。これは予想される動作ですか。
compression - GZipStream は破損したデータを検出しません (CRC32 パスでも)?
GZipStream を使用してデータを圧縮/解凍しています。ドキュメンテーションには、GZipStream が破損したデータを検出するための CRC も追加すると記載されているため、DeflateStream よりもこれを選択しました。これは、私が欲しかったもう 1 つの機能です。私の「肯定的な」単体テストは、一部のデータを圧縮し、圧縮されたバイト配列を保存してから、再び正常に解凍できるという点でうまく機能しています。.NET GZipStreamの圧縮と解凍に関する問題の投稿は、圧縮または解凍されたデータにアクセスする前に GZipStream を閉じる必要があることに気付きました。
次に、破損したデータを検出できることを確認するために、引き続き "ネガティブ" 単体テストを作成しました。以前、MSDN の GZipStream クラスの例を使用してファイルを圧縮し、圧縮ファイルをテキスト エディターで開き、1 バイトを変更してファイルを破損させました (テキスト エディターで開くだけでは不十分であるかのように!)。それを解凍して、期待どおりに InvalidDataException が発生したことを確認します。
単体テストを作成したとき、破損する任意のバイト (たとえば、compressedDataBytes[50] = 0x99) を選択し、InvalidDataException を取得しました。ここまでは順調ですね。気になったので、別のバイトを選んだのですが、驚いたことに、例外は発生しませんでした。データが正常に復元される限り、これは問題ない可能性があります (たとえば、データ ブロック内の未使用のバイトに偶然ヒットした場合など)。ただし、正しいデータも返されませんでした。
「私ではなかった」ことを確認するために、.NET GZipStream の圧縮と解凍の問題の下部からクリーンアップされたコードを取得し、適切に解凍できなくなるまで圧縮データの各バイトを順次破損するように修正しました。変更点は次のとおりです (Visual Studio 2010 テスト フレームワークを使用していることに注意してください)。
このテストを実行すると、次のようになります。
したがって、これは実際には、データを破損しても違いがなかった (文字列が正常に復元された) 7 つのケースがあったことを意味しますが、バイト 11 を破損しても例外はスローされず、データも復元されませんでした。
私は何かを見逃していますか、何か間違っていますか? 破損した圧縮データが検出されない理由を誰でも確認できますか?
c# - C# ネットワークストリーム圧縮 - Sharpziplib、DotNetZip、gzipstream のすべてがストリームでエラーを出す
ネットワーク ストリームを使用して通信する C# クライアント サーバー プログラムのペアがあります。圧縮なしですべて正常に動作します。ここで、帯域幅の使用量を減らしたいので、ネットワーク ストリームの周りに圧縮ラッパー ストリームを使用したいと考えています。
SharpZipLib、DotNetZip、C# 独自の GZipStream を試しましたが、どれも機能しません。
SharpZipLib には、フラッシュに問題があり、ここで指定された修正プログラムを適用すると、http://community.sharpdevelop.net/forums/p/7855/22139.aspxで例外「ヘッダー チェックサムが不正です」が発生します。
DotNetZip の DeflateStream を使用すると、ZLibException("Bad state (invalid stored block lengths)"); が発生します。
GZipStream は、「GZip ヘッダーのマジック ナンバーが正しくありません。GZip ストリームを渡していることを確認してください。」という System.IO.InvalidDataException を返します。
私が実装した方法は、バイトの配列がフレームワークによって送信される必要があるたびに、既存のネットワークストリームの周りに新しい圧縮ストリームラッパーを作成し、バイトを圧縮ストリームに書き込み、フラッシュ、クローズ、および破棄することです. これにより、各 WriteMessage(byte[] blah) が、すぐにフラッシュされる独自の状態に依存しない圧縮ストリームを使用するようになります。どのストリームも元のネットワーク ストリームを閉じないように注意しました。
基本的に、私の DecompressionStream は次のように作成されます(オプションはコメントアウトされています)
として始まりました
次に、ReceiveCallback でデータが読み取られ、ストリームがフラッシュされ、閉じられ、破棄されます。
CreateInputStreamWrapper を再度呼び出して、すぐに新しい inputStream を作成します。
どうしたの ?すべての圧縮ストリームの実装が「データストリームにエラーがあります」というエラーで失敗しているため、私と私のコードに違いないという予感があります。一方、圧縮を削除してネットワークストリームのみを使用しても問題はありません。これにより、問題は圧縮コードにあるに違いないと思います。
これは誰にとってもおなじみの音ですか?そして、私たちがそれに取り組んでいる間、ネットワークストリームをラップするのに適した(他の)圧縮ストリームの実装を知っている人はいますか?
c# - GZipStream から gzip 文字列へ
私はGZipStreamを使用して文字列をgzipしています。圧縮レベルを制御できるかどうか教えてもらえますか? これは、.net が作成するように見えるよりも圧縮された gzip ストリームを作成できることを認識しているためです。
c# - GZipStreamマシンへの依存
.NET4.0でマシン/OSに依存する奇妙なGZipStreamの動作に遭遇しています。これは関連するコードです:
Compress( "freek")を実行すると、
Windows7および
WindowsServer2008R2の場合。どちらも64ビットです。結果は同じだと思います。
どちらかの結果を解凍すると、両方のマシンで正しい結果が得られます。W7 ms.Length == 25で、W2K8R2 ms.Length == 128であることがすでにわかりましたが、理由はわかりません。
どうしたの?
java-me - j2me の Ksoap 例外
.NET WCF Web サービスを呼び出す 1 つの J2ME アプリケーションを作成し、ksoap を使用しました。
私は netbeans IDE を使用しています。
しかし、そのアプリケーションを実行すると、実行時の例外が発生します
その例外の理由は何ですか?
ここではエラーのないコンパイル時間です。