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     }
  • 相关阅读:
    【iOS】js调用oc的一个注意点
    【iOS】程序内跳转到支付宝转账(非SDK实现支付)及相关监听
    GCD定时器不走set_event_handler和variable is not assignable missing block
    苹果审核上传附件上传不上去
    上传本地代码到gitHub过程详解
    iOS---学习研究大牛Git高星项目YYCategories(四)
    iOS 关键字const/static/extern、UIKIT_EXTERN区别和用法
    iOS---学习研究大牛Git高星项目YYCategories(三)
    iOS---学习研究大牛Git高星项目YYCategories(二)
    iOS---学习研究大牛Git高星项目YYCategories(一)
  • 原文地址:https://www.cnblogs.com/CarlBlogs/p/7405575.html
Copyright © 2011-2022 走看看