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     }
  • 相关阅读:
    CRM 常用SQL 脚本
    Dynamic CRM 2013学习笔记(十七)JS读写各种类型字段方法及技巧
    Winform Treeview 排序及图标处理
    Dynamic CRM 2013学习笔记(十六)用JS控制Tab可见,可用
    sql server 小技巧(3) SQL Server 2012 数据库完整导出到SQL Azure (包括数据)
    解决iOS Xcode 模拟器键盘不弹出
    iOS核心动画
    PS中怎么给图层解锁
    Cocos2d-x设置吞没单击属性来避免精灵重叠被点击后的事件续传
    解决Cocos2d-x编译错误: 无法打开 源 文件 "extensions/ExtensionExport.h"
  • 原文地址:https://www.cnblogs.com/CarlBlogs/p/7405575.html
Copyright © 2011-2022 走看看