A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 成刚 中级黑马   /  2012-2-29 14:57  /  2093 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么操作呀?最好是举例说明!

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

2 个回复

倒序浏览
所谓的序列化就是是将对象转换为容易传输的格式的过程,一般情况下转化打流文件,放入内存或者IO文件中。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象,或者和其它应用程序共享使用。反之,反序列化根据流重新构造对象。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 赵国梁 于 2012-2-29 17:14 编辑

序列化是讲对象的状态存储到特定介质中的过程,也可以说是讲对象状态转换为可保持或传输的格式的过程。在序列化过程中,会将对象的公有成员,私有成员包括类名,都转换成数据流的形式,存储到存储介质中,这里说的存储介质通常指文件。例如:
  1. FileStream fileStream=null;
  2. //定义一个文件流
  3. fileStream=new FileStream("profile.bin",FileMode.Create);
  4. //二进制方式
  5. BinaryFormatter bf=new BinaryFormatter();
  6. //序列化保存配置文件对象Profile
  7. bf.Serialize(fileStream,Profile);
复制代码
因为序列化需要通过文件流来保存到文件,所以要事先定义一个文件流,BinaryFormatter是一个二进制格式化器,这个二进制格式话器具有一个重要的Serialize()方法。这个方法主要的功能是将特定对象序列化到特定文件之中,有两个参数,第一个参数是指定序列化过程的文件流,第二个参数是要保存的对象。

既然能将对象的状态保存到特定介质中,那么我们又应该能将这些对象状态读取回来,这就用到反序列化,反序列化就是从特定存储介质中将数据重新构建对象的过程。如下示例:
  1. FileStream fileStream=null;
  2. //定义一个文件流
  3. fileStream=new FileStream("profile.bin",FileMode.Open);
  4. //二进制方式
  5. BinaryFormatter bf=new BinaryFormatter();
  6. //反序列化对象Profile
  7. Proflie=(Profile)bf.Deserialize(fileStream);
复制代码
Deserialize方法就是反序列化的方法,唯一参数是指定序列化的文件流,它返回一个Object对象,通常我们仍然需要进一步讲这个Object对象转换成我们序列化时相应的对象类型。
反序列化将创建出原对象完全相同的副本,在序列化时保存的数据将无损失的保存下来。



评分

参与人数 2技术分 +3 黑马币 +1 收起 理由
孟庆波 + 1 赞一个!
郑文 + 3

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马