C#压缩的实现方法
2010-06-09 17:03
363 查看
代码
/// <summary> /// table XML序列化并压缩 /// </summary> /// <param name="table"></param> /// <param name="encryptor"></param> /// <returns></returns> public static byte[] Compress(DataTable table, ICryptoTransform encryptor) { byte[][] zipData = new byte[2][]; using (MemoryStream ms = new MemoryStream()) { //对字节流进行加密 using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { using (GZipStream zs = new GZipStream(cs, CompressionMode.Compress, true)) { using (BufferedStream bs = new BufferedStream(zs)) { table.WriteXmlSchema(bs); bs.Close(); } zs.Close(); } cs.FlushFinalBlock(); cs.Close(); } zipData[0] = ms.ToArray(); ms.Close(); } using (MemoryStream ms = new MemoryStream()) { using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write)) { using (GZipStream zs = new GZipStream(cs, CompressionMode.Compress, true)) { using (BufferedStream bs = new BufferedStream(zs)) { table.WriteXml(bs); bs.Close(); } zs.Close(); } cs.FlushFinalBlock(); cs.Close(); } zipData[1] = ms.ToArray(); ms.Close(); } //释放table的资源 table.Clear(); table.Dispose(); byte[] outData; using (MemoryStream ms2 = new MemoryStream()) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms2, zipData); outData = ms2.ToArray(); ms2.Close(); ms2.Position = 0; } //释放zipData的资源 GC.SuppressFinalize(zipData); return outData; } /// <summary> /// table XML序列化并压缩 不加密 /// </summary> /// <param name="table"></param> /// <returns></returns> public static byte[] Compress(DataTable table) { byte[][] zipData = new byte[2][]; using (MemoryStream ms = new MemoryStream()) { using (GZipStream zs = new GZipStream(ms, CompressionMode.Compress, true)) { using (BufferedStream bs = new BufferedStream(zs)) { table.WriteXmlSchema(bs); bs.Close(); } zs.Close(); } zipData[0] = ms.ToArray(); ms.Close(); } using (MemoryStream ms = new MemoryStream()) { using (GZipStream zs = new GZipStream(ms, CompressionMode.Compress, true)) { using (BufferedStream bs = new BufferedStream(zs)) { table.WriteXml(bs); bs.Close(); } zs.Close(); } zipData[1] = ms.ToArray(); ms.Close(); } //释放table的资源 table.Clear(); table.Dispose(); byte[] resutData; using (MemoryStream ms = new MemoryStream()) { IFormatter formatter = new BinaryFormatter(); formatter.Serialize(ms, zipData); resutData = ms.ToArray(); ms.Close(); ms.Position = 0; } //释放zipData的资源 GC.SuppressFinalize(zipData); return resutData; }
相关文章推荐
- C#使用WinRar命令进行压缩和解压缩操作的实现方法
- C#使用晚绑定来实现压缩Access数据库的方法
- C#图片压缩的实现方法
- C#实现压缩HTML代码的方法
- C#实现图片压缩方法
- C#实现图片压缩方法
- C#实现rar压缩与解压缩文件的方法
- C#使用iCSharpcode进行文件压缩实现方法
- C#实现Zip压缩目录中所有文件的方法
- C#实现页面GZip或Deflate压缩的方法
- C#实现压缩HTML代码的方法
- C#实现压缩和解压缩的方法示例【Gzip和Zip方式】
- C#图片压缩的实现方法
- C#实现文件压缩与解压的方法示例【ZIP格式】
- [导入]Asp.net 2.0 C#实现压缩/解压功能 (示例代码下载)
- C#自动实现Dll(OCX)控件注册的两种方法
- C#下载文件(可显示进度)的方法实现
- C#实现语音聊天之DirectX方法
- c#中实现文件拖放打开的方法
- C#编程实现动态改变配置文件信息的方法