質問

ています。IO.圧縮。GZipStreamまたはシステム。IO.圧縮。柔軟に対応zlib圧縮?

役に立ちましたか?

解決

から MSDN います。IO.圧縮。GZipStream:

このクラスは、gzip圧縮データ形式を採用する業界標準のアルゴリズムのためのロスレスなどのファイルを圧縮伸長.

から zlibのFAQ:

のgz*機能zlibの利用のgzip圧縮形式です。

なzlibとGZipStreamすべき相互運用性の高いものの、みご利用の場合はzlibの機能を取り扱うためのgzip-形式です。

システム。IO.圧縮。Deflateとzlibうな相互運用できます。

場合に対応する必要があるzipファイル(だいていないのかもしれませんが、ほかの誰かがこの)を使用する必要があり SharpZipLib または他の第三者図書館があります。

他のヒント

DotNetZip 含まれDeflateStream、ZlibStream、GZipStream、RFC1950 1951年、1952年.のすべての利用のDEFLATEアルゴリズムの枠組みとそのヘッダバイトごとに異なる。

としての活用の流DotNetZipないの 異常拡大データサイズ 圧縮時の報告に対する内蔵れている。また、内蔵のZlibStreamはDotNetZipすること、interopとzlib.

またこの問題を扱った。その場合、そのオブジェクトのデフレートした為替レー用途にでも便、Zlibヘッダが記録され RFC1950年.できる互換性のある値を含むファイル:

  • 二つのヘッダーバイト(CMF、FLGからのRFC1950)の値 0x78 0x01
    • CM =8=deflate
    • CINFO =7=32Kb窓
    • FCHECK =1=チェックサムビットのためにこのヘッダ
  • 出力C# DeflateStream
  • るAdler32チェックサムへの入力データ DeflateStream, では、"ビッグエンディアンフォーマット(MSB)

私自身のアドレルの実装

public class Adler32Computer
{
    private int a = 1;
    private int b = 0;

    public int Checksum
    {
        get
        {
            return ((b * 65536) + a);
        }
    }

    private static readonly int Modulus = 65521;

    public void Update(byte[] data, int offset, int length)
    {
        for (int counter = 0; counter < length; ++counter)
        {
            a = (a + (data[offset + counter])) % Modulus;
            b = (b + a) % Modulus;
        }
    }
}

としたものです。

に使用しましたGZipStreamを圧縮するために出力するために設計されています。純XmlSerializerおよび期間で決済されるものであるために完全に解凍結果とgunzip(cygwin),winzip、他のGZipStream.

参考までに、こちらかのコード:

FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write);
using (GZipStream gzStream = new GZipStream(fs, CompressionMode.Compress))
{
  XmlSerializer serializer = new XmlSerializer(typeof(MyDataType));
  serializer.Serialize(gzStream, myData);
}

そして、解凍クライアントまで、フルのc#

FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);
using (Stream input = new GZipStream(fs, CompressionMode.Decompress))
{
   XmlSerializer serializer = new XmlSerializer(typeof(MyDataType));
   myData = (MyDataType) serializer.Deserialize(input);
}

用のファイルライセンスのインストールをcygwinがみられることの差と同じファイル圧縮GZipStream、GNU GZip(おそらくヘッダ情報として記載のこのスレッドこの差しようとするのは二重サッシで遮音性抜群で日当た。

gzipはdeflate+ヘッダ-フッタデータのようにチェックサムは、長さなど。かな対応という意味において、方法に利用できるので、ストリームからのものを使用して同じ圧縮アルゴリズムです。

かなりの圧縮データを用いzlibはdeflateアルゴリズムも提供いたしませんの出力のための特定のファイル形式です。この場合、ストリームとしては、ハードドライブに最も懸念されるでしょうがなされている内容が消えてしまうアプリケーション(gzipやwinrar)でファイルのヘッダー(マジック番号等)は含まれないストリーム、も書きする必要があります。

始ます。NET Framework4.5の System.IO.Compression.DeflateStream クラスを使用しzlibライブラリ。

クラスからの MSDNの記事:

このクラスは、Deflateアルゴリズムは、業界標準のアルゴリズムのためのロスレスなどのファイルを圧縮伸長.はじめます。NET Framework4.5、DeflateStreamクラスを使用しzlibライブラリ。その結果、することで、より快適な圧縮アルゴリズムと、ほとんどの場合、さらに小型の圧縮ファイルによってのバージョンにアップデートします。NET Framework.

同意したアンドレアス.きんで開くことができるファイルが外部ツールなツールを期待のストリームがご利用いただけます。することもできるdeflateファイルに沿って、同じ圧縮クラスです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top