C#对象序列化和反序列化
2013-01-15 11:48
260 查看
网上找了一个关于序列化和压缩相关的方法,记录下来,以便日后用!
#region 可序列化对象到byte数组的相互转换 /// <summary> /// 将可序列化对象转成Byte数组 /// </summary> /// <param name="o">对象</param> /// <returns>返回相关数组</returns> public static byte[] ObjectToByteArray(object o) { MemoryStream ms = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(ms, o); ms.Close(); return ms.ToArray(); } /// <summary> /// 将可序列化对象转成的byte数组还原为对象 /// </summary> /// <param name="b">byte数组</param> /// <returns>相关对象</returns> public static object ByteArrayToObject(byte[] b) { MemoryStream ms = new MemoryStream(b, 0, b.Length); BinaryFormatter bf = new BinaryFormatter(); return bf.Deserialize(ms); } #endregion #region 采用.net系统自带Gzip压缩类进行流压缩 /// <summary> /// 压缩数据 /// </summary> /// <param name="data"></param> /// <returns></returns> 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; } /// <summary> /// 解压数据 /// </summary> /// <param name="data"></param> /// <returns></returns> 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 byte[1024]; 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; } #endregion
相关文章推荐
- C# XmlSerializer 对象的Xml序列化和反序列化
- C#+ArcEngine 序列化和反序列化AE对象
- C#对象的浅拷贝,深拷贝,序列化反序列化
- C#序列化及反序列化Json对象通用类JsonHelper
- 一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点,C#对象与xml文件的相互转换等等。)
- C# Json转对象 序列化 反序列化
- C#中序列化存储和传输及反序列化对象
- C#实现对象的Xml格式序列化及反序列化
- c#.net将对象序列化,反序列化json
- C#实现对象的Xml格式序列化及反序列化
- C#实现对象的Xml格式序列化及反序列化
- C# 泛型及继承层次对象的序列化及反序列化
- C#序列化对象为XMl于反序列化
- C# 实现复杂对象的序列化与反序列化[收藏此页] [打印]【IT168知识库】
- C#实现对象的Xml格式序列化及反序列化
- c# XML-Object对象 序列化-反序列化
- C#对象序列化与反序列化
- C#中XML与对象之间的序列化、反序列化
- c#中list对象的序列化和反序列化
- C#中XML与对象之间的序列化、反序列化