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

     1     public class CGZipUtil
     2     {
     3         /// <summary>
     4         /// 解压
     5         /// </summary>
     6         /// <param name="Value"></param>
     7         /// <returns></returns>
     8         public static DataSet GetDatasetByString(StringBuilder Value)
     9         {
    10             DataSet ds = new DataSet();
    11             string CC = GZipDecompressString(Value);
    12             System.IO.StringReader Sr = new StringReader(CC);
    13             ds.ReadXml(Sr);
    14             return ds;
    15         }
    16 
    17         /// <summary>
    18         /// 将传入字符串以GZip算法压缩后,返回Base64编码字符
    19         /// </summary>
    20         /// <param name="rawString">需要压缩的字符串</param>
    21         /// <returns>压缩后的Base64编码的字符串</returns>
    22         public static StringBuilder GZipCompressString(StringBuilder rawString)
    23         {
    24             if (rawString.Length == 0)
    25             {
    26                 return new StringBuilder("");
    27             }
    28             else
    29             {
    30                 byte[] rawData = System.Text.Encoding.UTF8.GetBytes(rawString.ToString());
    31                 byte[] zippedData = Compress(rawData);
    32                 return new StringBuilder((Convert.ToBase64String(zippedData)));
    33             }
    34         }
    35 
    36         /// <summary>
    37         /// GZip压缩
    38         /// </summary>
    39         /// <param name="rawData"></param>
    40         /// <returns></returns>
    41         static byte[] Compress(byte[] rawData)
    42         {
    43             MemoryStream ms = new MemoryStream();
    44             GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Compress, true);
    45             compressedzipStream.Write(rawData, 0, rawData.Length);
    46             compressedzipStream.Close();
    47             return ms.ToArray();
    48         }
    49 
    50 
    51         /// <summary>
    52         /// 将传入的二进制字符串资料以GZip算法解压缩
    53         /// </summary>
    54         /// <param name="zippedString">经GZip压缩后的二进制字符串</param>
    55         /// <returns>原始未压缩字符串</returns>
    56         public static string GZipDecompressString(StringBuilder zippedString)
    57         {
    58             if (zippedString == null || zippedString.Length == 0)
    59             {
    60                 return "";
    61             }
    62             else
    63             {
    64                 byte[] zippedData = Convert.FromBase64String(zippedString.ToString());
    65                 return (string)(System.Text.Encoding.UTF8.GetString(Decompress(zippedData)));
    66             }
    67         }
    68 
    69 
    70         /// <summary>
    71         /// ZIP解压
    72         /// </summary>
    73         /// <param name="zippedData"></param>
    74         /// <returns></returns>
    75         public static byte[] Decompress(byte[] zippedData)
    76         {
    77             MemoryStream ms = new MemoryStream(zippedData);
    78             GZipStream compressedzipStream = new GZipStream(ms, CompressionMode.Decompress);
    79             MemoryStream outBuffer = new MemoryStream();
    80             byte[] block = new byte[1024];
    81             while (true)
    82             {
    83                 int bytesRead = compressedzipStream.Read(block, 0, block.Length);
    84                 if (bytesRead <= 0)
    85                     break;
    86                 else
    87                     outBuffer.Write(block, 0, bytesRead);
    88             }
    89             compressedzipStream.Close();
    90             return outBuffer.ToArray();
    91         }
    92     }
  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业07
    C语言I博客作业03
    oracle 创建用户并指定表空间
    Oracle 给用户赋予dblink权限,创建dblink
    IDEA 2020.2 破解、激活
    nginx 里的常用变量
    nginx 跨域问题解决
    elasticsearch (一)
    kubenetes 安装部署
  • 原文地址:https://www.cnblogs.com/CarlBlogs/p/7405575.html
Copyright © 2011-2022 走看看