問題タブ [deflatestream]
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# - zip 内の zip は、文書化されていない System.IO.Compression.SubReadStream に開きます
zip アーカイブからストリームを集約するために使用する関数があります。
これは、ほとんどの場合にうまく機能します。ただし、zip 内に zip がある場合、ストリームを にキャストすると例外が発生しますDeflateStream
。
System.InvalidCastException: タイプ 'System.IO.Compression.SubReadStream' のオブジェクトをタイプ 'System.IO.Compression.DeflateStream' にキャストできません。
の Microsoft ドキュメントが見つかりませんSubReadStream
。zip として zip 内に zip を入れたいDeflateStream
です。これは可能ですか?もしそうなら、どのように?
アップデート
まだ成功していません。次のコードを使用してストリームをコピーするという@Sunshineの提案を試みました。
しかし、私は
System.NotSupportedException: ストリームは読み取りをサポートしていません。
調べdeflateStream.CanRead
ましたが本当です。
これは、zip だけでなく、zip 内にあるが圧縮されていないファイルでも発生することがわかりました (小さすぎるなどの理由で)。確かにこれに対処する方法があります。確かに誰かがこれに遭遇したことがあります。私はこの質問に報奨金を出しています。
@Quantic のおかげで、これがの.NET ソースです。SubReadStream
c# - AndroidでGZIP圧縮ストリームを使用する
Android デバイスのデータを圧縮して ASP.net サーバー側に送信したいのですが、多くの電力を消費したり、デバイス リソースを犠牲にしたりしたくありません。Android側でDeflateストリームを使用してデータを圧縮し、サーバー側で同じストリームを使用して解凍しようとしましたが、解凍された文字列は元のものと同じではありませんでした。その後、GZIP ストリームを使用してみましたが、復元されたデータは元のものと同じでした。私が読んだように、Deflate ストリームは GZIP よりも高速です。それで、私は何をすべきですか?Android と C# 間のデータ圧縮と解凍に GZip ストリームを使用するのがベスト プラクティスですか? Deflate ストリームを使用して圧縮されたデータを復元する方法はありますか?