.net GZipStream 压缩与解压

本文深入探讨了GzipStream在压缩和解压缩领域的应用,通过实例展示了如何利用该技术显著减少网络传输流量,特别适用于大量ASCII文本格式的数据压缩。详细介绍了压缩与解压代码实现,并强调了在不同数据大小下的压缩效果对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 简介:

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

转载于:https://my.oschina.net/000quanwei/blog/500729

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值