码迷,mamicode.com
首页 > Web开发 > 详细

.net GZipStream 压缩与解压

时间:2015-09-02 16:02:02      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

 简介:

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 ,效果非常明显。

.net GZipStream 压缩与解压

标签:

原文地址:http://my.oschina.net/000quanwei/blog/500729

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!