zoukankan      html  css  js  c++  java
  • C# 解压缩工具类GZip

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.IO.Compression;
    using System.Linq;
    using System.Text;
    
    namespace 落地页测试代码
    {
        public class GZip
        {
            /// <summary>
            /// 压缩
            /// </summary>
            /// <param name="text">文本</param>
            public static string Compress(string text)
            {
                if (text=="")
                    return string.Empty;
                byte[] buffer = Encoding.UTF8.GetBytes(text);
                return Convert.ToBase64String(Compress(buffer));
            }
    
            /// <summary>
            /// 解压缩
            /// </summary>
            /// <param name="text">文本</param>
            public static string Decompress(string text)
            {
                if (text=="")
                    return string.Empty;
                byte[] buffer = Convert.FromBase64String(text);
                using (var ms = new MemoryStream(buffer))
                {
                    using (var zip = new GZipStream(ms, CompressionMode.Decompress))
                    {
                        using (var reader = new StreamReader(zip))
                        {
                            return reader.ReadToEnd();
                        }
                    }
                }
            }
    
            /// <summary>
            /// 压缩
            /// </summary>
            /// <param name="buffer">字节流</param>
            public static byte[] Compress(byte[] buffer)
            {
                if (buffer == null)
                    return null;
                using (var ms = new MemoryStream())
                {
                    using (var zip = new GZipStream(ms, CompressionMode.Compress, true))
                    {
                        zip.Write(buffer, 0, buffer.Length);
                    }
                    return ms.ToArray();
                }
            }
    
            /// <summary>
            /// 解压缩
            /// </summary>
            /// <param name="buffer">字节流</param>
            public static byte[] Decompress(byte[] buffer)
            {
                if (buffer == null)
                    return null;
                return Decompress(new MemoryStream(buffer));
            }
    
            /// <summary>
            /// 压缩
            /// </summary>
            /// <param name="stream"></param>
            public static byte[] Compress(Stream stream)
            {
                if (stream == null || stream.Length == 0)
                    return null;
                return Compress(StreamToBytes(stream));
            }
    
            /// <summary>
            /// 解压缩
            /// </summary>
            /// <param name="stream"></param>
            public static byte[] Decompress(Stream stream)
            {
                if (stream == null || stream.Length == 0)
                    return null;
                using (var zip = new GZipStream(stream, CompressionMode.Decompress))
                {
                    using (var reader = new StreamReader(zip))
                    {
                        return Encoding.UTF8.GetBytes(reader.ReadToEnd());
                    }
                }
            }
            /// <summary>
            /// 流转换为字节流
            /// </summary>
            /// <param name="stream"></param>
            public static byte[] StreamToBytes(Stream stream)
            {
                stream.Seek(0, SeekOrigin.Begin);
                var buffer = new byte[stream.Length];
                stream.Read(buffer, 0, buffer.Length);
                return buffer;
            }
        }
    }
  • 相关阅读:
    面向对象1 继承与接口
    简易版爬虫(豆瓣)
    调用模块与包
    正则表达式2 以及configparser模块,subprocess模块简单介绍
    正则表达式(re模块)
    sys,logging,json模块
    常用模块(time,os,random,hashlib)
    内置函数与匿名函数
    day 19 yeild的表达式 面向过程 内置函数
    mysql中写存储过程加定时任务
  • 原文地址:https://www.cnblogs.com/bin521/p/10569807.html
Copyright © 2011-2022 走看看