問題タブ [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.
c# - 文字列を圧縮および解凍すると、元の文字列の最初の文字だけが得られますか?
このコードを使用して、Gzip で文字列を圧縮しています。
次のコードで解凍します。
このサンプル コードでこれらの関数を使用すると、結果は文字のみになりS
ます。
コードをデバッグすると、の値decom
が
ただし、表示される値は文字のみS
です。
c# - GZipStream を使用して解凍すると、最初の行のみが返されます
サードパーティの fms ログを解析する機能に取り組んできました。ログは Gzip にあるため、使用する他の Gzip ファイルで機能する解凍機能を使用します。
これらのファイルを解凍すると、圧縮ファイルの最初の行のみが取得されます。例外はありません。最初の行にEOFがあるかのように、残りのバイトが見つかりません。System.IO.Compression の代わりに Ionic.Zlib を使用してみましたが、結果は同じでした。ファイルが破損しているようには見えず、Winrar で解凍するとうまくいきます。
誰かがこれを解決する方法を知っているなら、私はあなたの助けに感謝します. ありがとう
ここからサンプル ファイルをダウンロードできます: http://www.adjustyourset.tv/fms_6F9E_20120621_0001.log.gz
これは私の解凍関数です:
c# - GZipStream は最初の行のみを解凍します
私の GZipStream は、ファイルの最初の行のみを解凍します。7-zip を使用して内容を抽出すると、期待どおりに機能し、ファイルの内容全体が得られます。また、cygwin と Linux で gunzip を使用して期待どおりに抽出されるため、これは O/S 固有 (Windows 7) であると予想されます。
これをトラブルシューティングする方法がわからないので、そのヒントがあれば大いに役立ちます。これと非常に似ているように聞こえますが、SharpZLib を使用しても同じ結果になります。
これが私がやっていることです:
c# - TCPを介したGzipstreamが解凍されない
protobuf-net
および
を使用してtcp接続を介してシリアル化された圧縮データを送信しようとしていますGzipStream
zipstreamからの逆シリアル化または読み取りは、ブロックするだけで完了しません。
それをテストするために、私はFileStream
データが実際に圧縮されて書き込まれていることを確認するために、より単純なものを使用することを選択しました。ただし、zipストリームからデータを読み取っていないように見えるため、この行Console.writeLine(inPerson1.name)
はをスローします。Object reference not set exception
なぜ、または私が間違っていることについて何か考えはありますか?
コード:
c# - 私の C# gzip が Fiddler や PHP よりも大きなファイルを生成するのはなぜですか?
このテキストを GZip すると:
こんにちは世界
このコードを使用して C# を介して:
結果のストリームの長さは 133 バイトです
FiddlerUtilities.GzipCompress
またはこの PHP ページで同じ文字列を実行すると、結果の長さはわずか 31 バイトです。
どちらの場合も入力は 11 バイトなので、PHP の結果は正しいと思いますが、これは明らかに、.NET 内から、またはその逆から PHP zip を解凍できないことを意味します。.NET の出力がこれほど大きくなるのはなぜですか?
実際、PHP と Fiddler の結果は同じ長さですが、同じではないことがわかります。PHP バージョンは .NET で解凍できますが、Fiddler バージョンは解凍できません。PHP ページは 3 つすべてを解凍するため、Fiddler と .NET の gzip の実装の間に非互換性があるようです。
リクエストに応じて、3 つの出力をこちらのドロップボックスにアップロードしました。
そして、これらはそれらのファイルの生の 16 進ダンプです (実際にこのような用途があるかどうかはわかりませんが、圧縮されたデータ自体ではなく、フィドラーと PHP のバージョンの違いがヘッダーにあることを示していると思います):
フィドラー:
PHP:
C#:
c# - 解凍/圧縮エラーのエラー
解凍中にエラーが発生しました
「入力は、Base 64以外の文字、2つ以上のパディング文字、またはパディング文字の間に空白以外の文字が含まれているため、有効なBase-64文字列ではありません。」
うまく圧縮されますが、解凍されません。同じ問題を抱えている他の多くの例を見てきましたが、私は言われたことに従っているように感じますが、解凍しても何も得られません。圧縮と解凍の方法は次のとおりです。
ここで、s2はタイプXElement string pH = DecompressData(stream2));です。ここで、stream2は文字列型です。データベースでは、圧縮中にルートタグを削除している間、ここでnvarchar型の列に格納されます。
初めてxmlはpeet3/24/2012Percent 33.3 10のようになります。次回は、別の学生データが既存のxmlに追加されます。ここでは、圧縮中に毎回、親タグを削除する必要があります。
c# - .NET GZipStream解凍して空のストリームを生成する
私は WPF をシリアル化して圧縮しようとしています .NETクラスFlowDocument
を使用して、バイト配列を解凍し、逆シリアル化して FlowDocument を再作成します。GZipStream
MSDN で説明されている例に従っており、次のテスト プログラムがあります。
ただしXamlReader.Load
、デバッグ出力で圧縮されていないストリームの長さがゼロであることが示されているため、行で例外が発生しますが、これは正常です。
uncompressed
最終ストリームに元の 123 バイトが含まれていないのはなぜですか?
(「圧縮された」バイト配列が「圧縮されていない」バイト配列よりも大きいという事実を無視してください。通常は、はるかに大きなフロー ドキュメントで作業します)
c# - オブジェクトをシリアライズして圧縮し、サードパーティのライブラリを使用せずに解凍してデシリアライズする方法は?
データベースにブロブとして保存したい大きなオブジェクトがメモリ内にあります。データベースサーバーは通常ローカルではないため、保存する前に圧縮したいと思います。
これは私が現時点で持っているものです:
ただし、Total Commander で同じバイトを圧縮すると、常にサイズが少なくとも 50% 削減されます。上記のコードでは、58MB を 48MB に圧縮し、15MB より小さいものはさらに大きくなります。
サードパーティの zip ライブラリを使用する必要がありますか、または .NET 3.5 でこれを行うためのより良い方法はありますか。私の問題に対する他の選択肢はありますか?
編集:
上記のコードにバグが見つかりました。アンジェロ、修正してくれてありがとう。
GZipStream の圧縮はまだ優れていません。TC の 48% 圧縮と比較して、gZipStream による平均圧縮率は 35% です。
以前のバージョンでどのようなバイトを取得していたのかわかりません:)
EDIT2:
圧縮率を 20% から 47% に改善する方法を見つけました。メモリ ストリームを 1 つではなく 2 つ使用する必要がありました。なぜこれが当てはまるのか、誰でも説明できますか?
これは、はるかに優れた圧縮を行う2つのメモリストリームを持つコードです!!!
c# - 1 つまたは 2 つのメモリ ストリームで gZipStream を使用すると、大きな違いが生じます
私は間違いなく非常に明白な何かを見逃していますが、2番目のケースで圧縮率がはるかに優れている理由を誰か説明できますか?!
ケース 1: 圧縮率が非常に低く、サイズが大きくなることもあります。
ケース 2: 圧縮が大幅に改善され、サイズが大きくなりませんでした。
私はミラー化された解凍を行いましたが、どちらの場合も問題なくソース オブジェクトに逆シリアル化できます。
ここにいくつかの統計があります:
UncSize: 58062085B、Comp1: 46828139B、0.81%
UncSize: 58062085B、Comp2: 31326029B、0.54%
UncSize: 7624735B、Comp1: 7743947B、1.02%
UncSize: 7624735B、Comp2: 5337522B、0.70%
UncSize: 1237628B、Comp1: 1265406B、1.02%
UncSize: 1237628B、Comp2: 921695B、0.74%
c# - GZipStream 圧縮の実行中に System.OutofMemoryException がスローされる
私は勝利の形で働いています。次の操作中にエラーが発生しました。System.OutOfMemoryException
操作を2〜3回連続して実行しようとすると、エラーが表示されます。.NET は、操作で使用されるリソースを解放できないようです。私が操作に使用しているファイルは非常に大きく、約500 MB を超えています。
私のサンプルコードは以下の通りです。エラーを解決する方法を教えてください。