Java的对象序列化以及文件IO处理

发表于:2010-9-27 10:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:notifier(cnblogs)    来源:51Testing软件测试网采编

#
java

  1.对象的序列化就是保存对象的当前状态。

  2.保存对象的状态有两种主要的方式:

    1)  对象序列化(将对象写入到文件,以后再反序列化,见后例)

    如果保存的数据用于Java程序内交互,则采用对象的序列化;

    2)  写入文件(将对象写入到文本文件,注意,是文本文件)

    如果保存的数据用于和其他非Java程序交互,则保存到文本文件。

  3.对象如果需要序列化,则它所在的类必须要实现Serializable接口。

  如果某类是可序列化的,则它的子类自动地可以序列化。

  4.对象序列化的步骤:

    1) 创建文件输出流;

    2) 创建对象输出流;

    3) 写入对象状态;

    4) 关闭对象输出流;

//1.创建文件输出流
FileOutputStream fs = new FileOutputStream("OutputFile.file");
 
//2.创建对象输出流
ObjectOutputStream os = new ObjectOutputStream(fs);

//3.写入对象状态
os.writeObject(characterOne);
os.writeObject(characterTwo);
os.writeObject(characterThree);

//4.关闭对象输出流
os.close();

  对象写入文件的顺序为:

  其中,ObjectOutputStream是把对象转换成字节流;FileOutputStream是把字节流写入文件。

  5.序列化对象会把对象的所有属性保存,被对象的实例变量所引用的对象也会被序列化。

  如果某实例变量不能或不应该被序列化,则把这个变量标记为transient。将属性标记为transient后,对象序列化时会将该属性保存为null值。

  6.对象解序列化的步骤:

    1) 创建文件输入流;

    2) 创建对象输入流;

    3) 读出对象状态;

    4) 转换对象类型(因为对象读出后为Object类型);

    5) 关闭对象输入流;

//1.创建文件输入流,如果文件不存在,则程序抛出异常
FileInputStream fs = new FileInputStream("OutputFile.file");

//2.创建对象输入流
ObjectInputStream oi = new ObjectInputStream(fs);

//3.读出对象状态
Object one = oi.readObject();
Object two = oi.readObject();
Object three = oi.readObject();

//4.转换对象类型
GameCharacter elf = (GameCharacter) one;
GameCharacter troll = (GameCharacter) two;
GameCharacter magician = (GameCharacter) three;
  
//5.关闭对象输入流
oi.close(); 

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号