对象的序列化和反序列化
2008-02-01 10:55
176 查看
2007年11月27日 星期二 下午 05:45
今天突然看到这个话题.找了下资料,个人理解如下: 对象序列化:把一个对象存为文件,格式不定. 反序列化:把文件还原成一个对象. 序列化方法: public static void SerializeObject(string fileName, object obj) { BinaryFormatter serialize = new BinaryFormatter(); Stream st = new FileStream(fileName, FileMode.Create); serialize.Serialize(st, obj); st.Close(); } 反序列化方法: public static object DeSerializeObject(string fileName, Type type) { Stream fs = File.Open(fileName, FileMode.Open);// File.OpenRead(fileName); BinaryFormatter deserializer = new BinaryFormatter(); object obj= deserializer.Deserialize(fs);//反序列化得到的对象 fs.Close(); return obj; } 这两个方法都是通过把对象存为二进制数据,再转出来,这种情况下,直接打开文件是乱码的. 我看到还有一种: 序列化: Stream writer = null; try { Type type = obj.GetType(); XmlSerializer serializer = new XmlSerializer(type); writer = new FileStream(fileName, FileMode.Create); serializer.Serialize(writer, obj); } catch (Exception ex) { throw ex; } finally { if (writer != null) writer.Close(); } 反序列化: if (!File.Exists(fileName)) return null; FileStream fs = null; try { fs = new FileStream(fileName, FileMode.Open); XmlSerializer xSer = new XmlSerializer(type); XmlReader reader = new XmlTextReader(fs); return xSer.Deserialize(reader); } catch (Exception ex) { throw ex; } finally { if (fs != null) { fs.Close(); } } 这种就不是存的二进制了,可以直接打开文件并查看数据,现在还不知道用那一种好, 关于序列化的好处,也尚未理解透彻~~ 补充,被序列化的类,在类前面要加[Serializable()],表示它是可以被序列化的,不然会抛导异常,不过当用XML那个序列化的时候又不必加,哎...怪事. |
相关文章推荐
- vc++上的MFC的对象序列化和反序列化
- C#对象序列化与反序列化
- 剖析对象的序列化和反序列化
- Java 对象的序列化 (Serializable)和反序列化
- Java对象的序列化和反序列化
- 对象的序列化与反序列化
- Windows CE /SmartDeviceProject 操作Json数据实现对象序列化和反序列化
- Java对象序列化和反序列化
- Java对象的序列化和反序列化
- 完成序列化和反序列化的一个集合操作,集合对象中要求保存2个用户对象
- java中对象和json格式相互序列化和反序列化的函数
- Java对象序列化和反序列化的工具方法
- Java对象的序列化和反序列化
- Xml序列化和反序列化对象-使用MemoryStream-实践
- Java基础学习总结——Java对象的序列化和反序列化
- Java基础学习总结——Java对象的序列化和反序列化
- 如何序列化与反序列化复杂对象
- XmlSerializer 对象的Xml序列化和反序列化
- Xml与对象之间的序列化、反序列化
- Java 对象序列化和反序列化