.Net序列化与数据压缩类x_第1页
.Net序列化与数据压缩类x_第2页
.Net序列化与数据压缩类x_第3页
.Net序列化与数据压缩类x_第4页
.Net序列化与数据压缩类x_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.Net序列化与数据压缩类using System;using System.Collections.Generic;using System.IO.Compression;using System.Text;using System.Data;using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;using KCSvrOpr.Encrypt;using System.Xml;namespace KCSvrOpr.DataFormat / / 功 能:对数据的基本操作 / 作 者:BQONE / 创建日期:2007年04月17日 / 更新作者: / 更新日期: / 添加功能: / 描 述:包括数据的压缩,对象与byte之间的转换 / 版 权:HN KC / public class KCDataFormatter public KCDataFormatter() / / 将DataSet格式化成字节数组byte / / DataSet对象 / 字节数组 public static byte GetBinaryFormatData(DataSet dsOriginal) byte binaryDataResult = null; MemoryStream memStream = new MemoryStream(); IFormatter brFormatter = new BinaryFormatter(); dsOriginal.RemotingFormat = SerializationFormat.Binary; brFormatter.Serialize(memStream, dsOriginal); binaryDataResult = memStream.ToArray(); memStream.Close(); memStream.Dispose(); return binaryDataResult; / / 将DataSet格式化成字节数组byte,并且已经经过压缩 / / DataSet对象 / 字节数组 public static byte GetBinaryFormatDataCompress(DataSet dsOriginal) byte binaryDataResult = null; MemoryStream memStream = new MemoryStream(); IFormatter brFormatter = new BinaryFormatter(); dsOriginal.RemotingFormat = SerializationFormat.Binary; brFormatter.Serialize(memStream, dsOriginal); binaryDataResult = memStream.ToArray(); memStream.Close(); memStream.Dispose(); return Compress(binaryDataResult); / / 解压数据 / / / public static byte Decompress(byte data) byte bData; MemoryStream ms = new MemoryStream(); ms.Write(data, 0, data.Length); ms.Position = 0; GZipStream stream = new GZipStream(ms, CompressionMode.Decompress, true); byte buffer = new byte1024; MemoryStream temp = new MemoryStream(); int read = stream.Read(buffer, 0, buffer.Length); while (read 0) temp.Write(buffer, 0, read); read = stream.Read(buffer, 0, buffer.Length); /必须把stream流关闭才能返回ms流数据,不然数据会不完整 stream.Close(); stream.Dispose(); ms.Close(); ms.Dispose(); bData = temp.ToArray(); temp.Close(); temp.Dispose(); return bData; / / 压缩数据 / / / public static byte Compress(byte data) byte bData; MemoryStream ms = new MemoryStream(); GZipStream stream = new GZipStream(ms, CompressionMode.Compress, true); stream.Write(data, 0, data.Length); stream.Close(); stream.Dispose(); /必须把stream流关闭才能返回ms流数据,不然数据会不完整 /并且解压缩方法stream.Read(buffer, 0, buffer.Length)时会返回0 bData = ms.ToArray(); ms.Close(); ms.Dispose(); return bData; / / 将字节数组反序列化成DataSet对象 / / 字节数组 / DataSet对象 public static DataSet RetrieveDataSet(byte binaryData) DataSet dsOriginal = null; MemoryStream memStream = new MemoryStream(binaryData); IFormatter brFormatter = new BinaryFormatter(); Object obj = brFormatter.Deserialize(memStream); dsOriginal = (DataSet)obj; return dsOriginal; / / 将字节数组反解压后序列化成DataSet对象 / / 字节数组 / DataSet对象 public static DataSet RetrieveDataSetDecompress(byte binaryData) DataSet dsOriginal = null; MemoryStream memStream = new MemoryStream(Decompress(binaryData); IFormatter brFormatter = new BinaryFormatter(); Object obj = brFormatter.Deserialize(memStream); dsOriginal = (DataSet)obj; return dsOriginal; / / 将object格式化成字节数组byte / / object对象 / 字节数组 public static byte GetBinaryFormatData(object dsOriginal) byte binaryDataResult = null; MemoryStream memStream = new MemoryStream(); IFormatter brFormatter = new BinaryFormatter(); brFormatter.Serialize(memStream, dsOriginal); binaryDataResult = memStream.ToArray(); memStream.Close(); memStream.Dispose(); return binaryDataResult; / / 将objec格式化成字节数组byte,并压缩 / / object对象 / 字节数组 public static byte GetBinaryFormatDataCompress(object dsOriginal) byte binaryDataResult = null; MemoryStream memStream = new MemoryStream(); IFormatter brFormatter = new BinaryFormatter(); brFormatter.Serialize(memStream, dsOriginal); binaryDataResult = memStream.ToArray(); memStream.Close(); memStream.Dispose(); return Compress(binaryDataResult); / / 将字节数组反序列化成object对象 / / 字节数组 / object对象 public static object RetrieveObject(byte binaryData) MemoryStream memStream = new MemoryStream(binaryData); IFormatter brFormatter = new BinaryFormatter(); Object obj = brFormatter.Deserialize(memStream); return obj; / / 将字节数组解压后反序列化成object对象 / / 字节数组 / object对象 public static object RetrieveObjectDecompress(byte binaryData) MemoryStream memStream = new MemoryStream(Decompress(binaryData); IFormatter brFormatter = new BinaryFormatter(); Object obj = brFormatter.Deserialize(memStream); return obj; / / 解密配置文件并读入到xmldoc中 / public static XmlNode DecryptConfigFile(string filePath) FileStream fs = new FileStream(filePath, FileMode.Open); XmlDocument m_XmlDoc = new XmlDocument(); BinaryFormatter formatter = null; try formatter = new BinaryFormatter(); / Deserialize the hashtable from the file and / assign the reference to the local variable. m_XmlDoc.LoadXml(KCEncrypt.Decrypt(string)formatter.Deserialize(fs); return m_XmlDoc.DocumentElement; catch (SerializationException e) Console.WriteLine(Failed to deserialize. Reason: + e.Message); throw; finally fs.Close(); fs = null; / / 加密密钥后再对文件字符进行加密 / public static void EncryptConfigFile(string filePath, string str) FileStream fs = new FileStrea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论