C# DataSet String Byte[] 压缩 解压缩 代码 实例
2010-05-18 10:40
453 查看
添加引用 using System.IO.Compression;
代码如下:
代码如下:
/// <summary> /// 获取数据压缩后的字节码 /// </summary> public byte[] Compress(DataSet dt) { try { // 声明MemoryStream MemoryStream ms = new MemoryStream(); // 写入DataSet中的数据到ms中 dt.WriteXml(ms, XmlWriteMode.WriteSchema); // ms转换为数组序列 byte[] bsrc = ms.ToArray(); //关闭ms并释放资源 ms.Close(); ms.Dispose(); ms = new MemoryStream(); ms.Position = 0; // 压缩数组序列中的数据 DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress); zipStream.Write(bsrc, 0, bsrc.Length); zipStream.Close(); zipStream.Dispose(); return ms.ToArray(); } catch { return null; } } /// <summary> /// 获取对象压缩后的字节码 /// </summary> public byte[] Compress(string str) { try { // ms读取传入的str并转存如数组序列中 MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter(ms); sw.Write(str); sw.Close(); byte[] bsrc = ms.ToArray(); ms.Close(); ms.Dispose(); ms = new MemoryStream(); ms.Position = 0; // 压缩数组序列并返回压缩后的数组 DeflateStream zipStream = new DeflateStream(ms, CompressionMode.Compress); zipStream.Write(bsrc, 0, bsrc.Length); zipStream.Close(); zipStream.Dispose(); return ms.ToArray(); } catch { return null; } } /// <summary> /// 获取解压缩后的数据集 /// </summary> public DataSet DeCompress(byte[] arrbts) { try { // MemoryStream ms = new MemoryStream(); ms.Write(arrbts, 0, ArrBytes.Length); ms.Position = 0; // DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress); MemoryStream UnzipStream = new MemoryStream(); byte[] sDecompressed = new byte[128]; while (true) { int bytesRead = ZipStream.Read(sDecompressed, 0, 128); if (bytesRead == 0) { break; } UnzipStream.Write(sDecompressed, 0, bytesRead); } ZipStream.Close(); ms.Close(); UnzipStream.Position = 0; DataSet ds = new DataSet(); // 读取解压后xml数据 ds.ReadXml(UnzipStream); ds.AcceptChanges(); //更新所有行的状态为初始状态 return ds; } catch { return null; } } /// <summary> /// 获取解压缩后的字符串 /// </summary> public string DeCompressString(byte[] arrbts) { try { MemoryStream ms = new MemoryStream(); ms.Write(arrbts, 0, ArrBytes.Length); ms.Position = 0; DeflateStream ZipStream = new DeflateStream(ms, CompressionMode.Decompress); MemoryStream UnzipStream = new MemoryStream(); byte[] sDecompressed = new byte[128]; while (true) { int bytesRead = ZipStream.Read(sDecompressed, 0, 128); if (bytesRead == 0) { break; } UnzipStream.Write(sDecompressed, 0, bytesRead); } ZipStream.Close(); ms.Close(); UnzipStream.Position = 0;// 解压起始位置设置为头 StreamReader sr = new StreamReader(UnzipStream); return sr.ReadToEnd(); } catch { return ""; } }
相关文章推荐
- C#使用SQL Dataset数据集代码实例
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
- C#byte数组与Image的相互转换实例代码
- java 将byte中的有效长度转换为String的实例代码
- 压缩后再解压缩,byte转string出现乱码问题
- C#中的DataSet、string、DataTable、对象转换成Json的实现代码
- C#中byte[]与string的转换代码
- LZMA C# SDK 子线程压缩与解压缩 Unity3d实例
- c#实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩
- C# 利用WinRAR (加密)压缩及解压缩 取消对话框
- C# Byte数组转换String解决方案
- js脚本压缩解压缩代码
- c# .net中如何实现图片防盗链功能的代码实例
- C# 创建DataSet 实例
- C# 连接ACCESS数据库代码实例
- C#操作Excel代码实例
- C# 代码编译器 及 编译器实例
- Asp.net 2.0 C#实现压缩/解压功能 (示例代码)
- C#调用WinRAR实现压缩与解压缩