c# 使用GZipStream压缩和解压流


        /// <summary>
        /// 压缩流
        /// </summary>
        /// <param name="sourceStream"></param>
        /// <returns></returns>
        public  Stream DecompressStream(Stream sourceStream)
        {
            MemoryStream responseStream = new MemoryStream();
            using (System.IO.Compression.GZipStream compressedStream = new System.IO.Compression.GZipStream(responseStream, System.IO.Compression.CompressionMode.Compress, true))
            {
                byte[] buffer = new byte[sourceStream.Length];
                int checkCounter = sourceStream.Read(buffer, 0, buffer.Length);
                if (checkCounter != buffer.Length) throw new ApplicationException();
                compressedStream.Write(buffer, 0, buffer.Length);
            }
            responseStream.Position = 0;
            return responseStream;

        } 

//解压数据

        static  Stream DeCompress( Stream stream)

        {

 // 把 Stream 转换成 byte[]
            byte[] bytess = new byte[stream.Length];
            stream.Read(bytess, 0, bytes.Length);


            using (MemoryStream source = new MemoryStream())
            {
                using (GZipStream gs = new GZipStream(new MemoryStream(data), CompressionMode.Decompress, true))
                {
                    //从压缩流中读出所有数据
                    byte[] bytes = new byte[4096];
                    int n;
                    while ((n = gs.Read(bytes, 0, bytes.Length)) != 0)
                    {
                        source.Write(bytes, 0, n);
                    }
                }
                return source;
            }
        }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值