zoukankan      html  css  js  c++  java
  • C#对GZIP压缩和解压

    /// <summary>
    /// 将Gzip的byte数组读取为字符串
    /// </summary>
    /// <param name="bytes"></param>
    /// <param name="encoding"></param>
    /// <returns></returns>
    public static string ReadGzip(byte[] bytes, string encoding = "GB2312")
    {
        string result = string.Empty;
        using (MemoryStream ms = new MemoryStream(bytes))
        {
            using (GZipStream decompressedStream = new GZipStream(ms, CompressionMode.Decompress))
            {
                using (StreamReader sr = new StreamReader(decompressedStream, Encoding.GetEncoding(encoding)))
                {
                    result = sr.ReadToEnd();
                }
            }
        }
        return result;
    }
    
    /// <summary>
    /// 将字符串压缩成Gzip格式的byte数组
    /// </summary>
    /// <param name="str"></param>
    /// <param name="encoding"></param>
    /// <returns></returns>
    public static byte[] WriteGzip(string str, string encoding = "GB2312")
    {
        byte[] rawData = System.Text.Encoding.UTF8.GetBytes(str);
        using (MemoryStream ms = new MemoryStream())
        {
            GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
            compressedzipStream.Write(rawData, 0, rawData.Length);
            compressedzipStream.Close();
            return ms.ToArray();
        }
    }
    
    /// <summary>
    /// 解压Gzip文件,返回字符串
    /// </summary>
    /// <param name="fileName">文件全路径</param>
    /// <returns>字符串</returns>
    public static string ReadGzipFromFile(string fileName)
    {
        using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read))
        {
            using (GZipStream decompressedStream = new GZipStream(fileStream, CompressionMode.Decompress))
            {
                StreamReader reader = new StreamReader(decompressedStream);
                string result = reader.ReadToEnd();//重点
                reader.Close();
                return result;
            }
        }
    }

    外面可以通过File.ReadAllBytes()和File.WriteAllBytes()进行文件的操作。而GZIP文件的后缀名为.gz

    灵感来源:http://www.cnblogs.com/gengaixue/p/3300664.html

  • 相关阅读:
    POI使用详解
    POI导入导出Excel文件(二)
    jsp页面String转JSON
    jQuery的9中构造函数
    元素的BFC特性与自适应布局
    JS replace可以接受回调函数
    基于clip-path的任意元素的碎片拼接动效(源自鑫空间)
    解耦应用逻辑/事件处理程序
    CSS行高line-height的一些深入理解及应用
    常见的三种三栏网页宽度自适应布局 方法
  • 原文地址:https://www.cnblogs.com/duanjt/p/5715717.html
Copyright © 2011-2022 走看看