.net GZipStream 壓縮與解壓

ygp8 9年前發布 | 8K 次閱讀 .NET開發 gzip

 簡介:


GzipStream表示GZip 數據格式,它使用無損壓縮和解壓縮文件的行業標準算法。 這種格式包括一個檢測數據損壞的循環冗余校驗值。 GZip 數據格式使用的算法與 DeflateStream 類的算法相同,但它可以擴展以使用其他壓縮格式。 這種格式可以通過不涉及專利使用權的方式輕松實現。


   實際使用中因為涉及到網絡傳輸大量數據,直接傳送簡直不能忍,用GzipStream壓縮了一下后再傳輸流量立即下降了80%,,主要是因為ASCII文本格式有比較高的壓縮率所以會比較高。

   GzipStream 位于 System.IO.Compression 中

   壓縮代碼


public byte[] Compress(byte[] io)
        {
            System.IO.MemoryStream basestream = new System.IO.MemoryStream();
            using (System.IO.Compression.GZipStream compressstream = new GZipStream(basestream, CompressionMode.Compress, true))
            {
                compressstream.Write(io, 0, io.Length);
                compressstream.Flush();
                compressstream.Close();
            }
            basestream.Position = 0;
            return basestream.GetBuffer();
        }



解壓代碼



public System.IO.StringReader DeCompress(byte[] str)
        {
            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            stream.Write(str,0,str.Length);
            stream.Position = 0;
            GZipStream zip = new GZipStream(stream, CompressionMode.Decompress);
            System.IO.StreamReader rd = new System.IO.StreamReader(zip);
            return new System.IO.StringReader(rd.ReadToEnd());
        }



 事實上,只有當你壓縮大量字節的時候才會有明顯的壓縮率,如果你壓少量的字節反而壓縮后會更大。 一般來講100+個字節以上才會有好的效果,小于這個值不需要壓縮了。


  我實際用的過程中 壓縮前為3M 壓縮后 50K ,效果非常明顯。

來自:http://my.oschina.net/000quanwei/blog/500729

 本文由用戶 ygp8 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!