本帖最后由 赵国梁 于 2012-2-29 17:14 编辑
序列化是讲对象的状态存储到特定介质中的过程,也可以说是讲对象状态转换为可保持或传输的格式的过程。在序列化过程中,会将对象的公有成员,私有成员包括类名,都转换成数据流的形式,存储到存储介质中,这里说的存储介质通常指文件。例如:- FileStream fileStream=null;
- //定义一个文件流
- fileStream=new FileStream("profile.bin",FileMode.Create);
- //二进制方式
- BinaryFormatter bf=new BinaryFormatter();
- //序列化保存配置文件对象Profile
- bf.Serialize(fileStream,Profile);
复制代码 因为序列化需要通过文件流来保存到文件,所以要事先定义一个文件流,BinaryFormatter是一个二进制格式化器,这个二进制格式话器具有一个重要的Serialize()方法。这个方法主要的功能是将特定对象序列化到特定文件之中,有两个参数,第一个参数是指定序列化过程的文件流,第二个参数是要保存的对象。
既然能将对象的状态保存到特定介质中,那么我们又应该能将这些对象状态读取回来,这就用到反序列化,反序列化就是从特定存储介质中将数据重新构建对象的过程。如下示例:- FileStream fileStream=null;
- //定义一个文件流
- fileStream=new FileStream("profile.bin",FileMode.Open);
- //二进制方式
- BinaryFormatter bf=new BinaryFormatter();
- //反序列化对象Profile
- Proflie=(Profile)bf.Deserialize(fileStream);
复制代码 Deserialize方法就是反序列化的方法,唯一参数是指定序列化的文件流,它返回一个Object对象,通常我们仍然需要进一步讲这个Object对象转换成我们序列化时相应的对象类型。
反序列化将创建出原对象完全相同的副本,在序列化时保存的数据将无损失的保存下来。
|