转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> C语言系列 >> 正文
C# DataSet String Byte[] 压缩 解压缩 代码 实例         ★★★

C# DataSet String Byte[] 压缩 解压缩 代码 实例

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1243 更新时间:2012/10/30 8:37:21

C# DataSet String Byte[] 压缩 解压缩 代码 实例

添加引用 using System.IO.Compression;

代码如下:

以下是代码片段:
  1. /// <summary>   
  2. /// 获取数据压缩后的字节码   
  3. /// </summary>   
  4. public byte[] Compress(DataSet dt)  
  5. {  
  6.     try  
  7.     {  
  8.         // 声明MemoryStream   
  9.         MemoryStream ms = new MemoryStream();  
  10.         // 写入DataSet中的数据到ms中   
  11.         dt.WriteXml(ms, XmlWriteMode.WriteSchema);  
  12.         // ms转换为数组序列   
  13.         byte[] bsrc = ms.ToArray();  
  14.         //关闭ms并释放资源   
  15.         ms.Close();  
  16.         ms.Dispose();  
  17.           
  18.         ms = new MemoryStream();  
  19.         ms.Position = 0;  
  20.         // 压缩数组序列中的数据   
  21.         DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress);  
  22.         zipStream.Write(bsrc, 0, bsrc.Length);  
  23.         zipStream.Close();  
  24.         zipStream.Dispose();  
  25.         return ms.ToArray();  
  26.     }  
  27.     catch  
  28.     {  
  29.         return null;  
  30.     }  
  31. }  
  32. /// <summary>   
  33. /// 获取对象压缩后的字节码   
  34. /// </summary>   
  35. public byte[] Compress(string str)  
  36. {  
  37.     try  
  38.     {  
  39.         // ms读取传入的str并转存如数组序列中   
  40.         MemoryStream ms = new MemoryStream();  
  41.         StreamWriter sw = new StreamWriter(ms);  
  42.         sw.Write(str);  
  43.         sw.Close();                 
  44.         byte[] bsrc = ms.ToArray();  
  45.         ms.Close();  
  46.         ms.Dispose();  
  47.         ms = new MemoryStream();  
  48.         ms.Position = 0;  
  49.         // 压缩数组序列并返回压缩后的数组   
  50.         DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress);  
  51.         zipStream.Write(bsrc, 0, bsrc.Length);  
  52.         zipStream.Close();  
  53.         zipStream.Dispose();  
  54.         return ms.ToArray();  
  55.     }  
  56.     catch  
  57.     {  
  58.         return null;  
  59.     }  
  60. }  
  61. /// <summary>   
  62. /// 获取解压缩后的数据集   
  63. /// </summary>   
  64. public DataSet DeCompress(byte[] arrbts)  
  65. {  
  66.     try  
  67.     {  
  68.         //    
  69.         MemoryStream ms = new MemoryStream();  
  70.         ms.Write(arrbts, 0, ArrBytes.Length);  
  71.         ms.Position = 0;  
  72.         //   
  73.         DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress);  
  74.         MemoryStream UnzipStream = new MemoryStream();  
  75.         byte[] sDecompressed = new byte[128];  
  76.         while (true)  
  77.         {  
  78.             int bytesRead = ZipStream.Read(sDecompressed, 0, 128);  
  79.             if (bytesRead == 0)  
  80.             {  
  81.                 break;  
  82.             }  
  83.             UnzipStream.Write(sDecompressed, 0, bytesRead);  
  84.         }  
  85.         ZipStream.Close();  
  86.         ms.Close();  
  87.         UnzipStream.Position = 0;  
  88.         DataSet ds = new DataSet();  
  89.         // 读取解压后xml数据   
  90.         ds.ReadXml(UnzipStream);  
  91.         ds.AcceptChanges();     //更新所有行的状态为初始状态   
  92.         return ds;  
  93.     }  
  94.     catch  
  95.     { return null; }  
  96. }  
  97. /// <summary>   
  98. /// 获取解压缩后的字符串   
  99. /// </summary>   
  100. public string DeCompressString(byte[] arrbts)  
  101. {  
  102.     try  
  103.     {  
  104.         MemoryStream ms = new MemoryStream();  
  105.         ms.Write(arrbts, 0, ArrBytes.Length);  
  106.         ms.Position = 0;  
  107.         DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress);  
  108.         MemoryStream UnzipStream = new MemoryStream();  
  109.         byte[] sDecompressed = new byte[128];  
  110.         while (true)  
  111.         {  
  112.             int bytesRead = ZipStream.Read(sDecompressed, 0, 128);  
  113.             if (bytesRead == 0)  
  114.             {  
  115.                 break;  
  116.             }  
  117.             UnzipStream.Write(sDecompressed, 0, bytesRead);  
  118.         }  
  119.         ZipStream.Close();  
  120.         ms.Close();  
  121.         UnzipStream.Position = 0;// 解压起始位置设置为头   
  122.         StreamReader sr = new StreamReader(UnzipStream);  
  123.         return sr.ReadToEnd();  
  124.     }  
  125.     catch  
  126.     {  
  127.         return "";  
  128.     }  
  129. }  


[C语言系列]C# 过滤html,js,css代码 正则表达式  [C语言系列]C# DataGridView显示行号的两种方法
[C语言系列]C# WinForm 中Label自动换行 解决方法  [C语言系列]C# 线程调用主线程中的控件
[电脑应用]c# winform 打包部署 自定义界面 或设置开机启动  [C语言系列]C# 和 Linux 时间戳转换
[C语言系列]C#实现 WebBrowser中新窗口打开链接用默认或者指定…  [C语言系列]C#全角和半角转换
[C语言系列]c#WebBrowser查找并选择文本  [C语言系列]C#中实现WebBrowser控件的HTML源代码读写
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台