java 对象序列化写入文件

来源:互联网 发布:python工程师 编辑:程序博客网 时间:2024/05/16 12:55

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

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

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

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

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

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

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

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

4.对象序列化的步骤:

1) 创建文件输出流;

2) 创建对象输出流;

3) 写入对象状态;

4) 关闭对象输出流;

import java.io.*;import java.util.Date;class Customer implements Serializable {private String name;private int age;public Customer(String name, int age) {this.name = name;this.age = age;}public String toString() {return "name=" + name + ",age=" + age;}public static void main(String[] args) {// TODO Auto-generated method stubtry {ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("xuliehua.txt"));// 序列化对象Customer customer = new Customer("张三", 50);oos.writeObject(customer);oos.close();// 反序列化对象ObjectInputStream ois = new ObjectInputStream(new FileInputStream("xuliehua.txt"));Customer obj3 = (Customer) ois.readObject();System.out.println("obj3=" + obj3);ois.close();} catch (Exception e) {e.printStackTrace();}}}

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

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

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

1) 创建文件输入流;

2) 创建对象输入流;

3) 读出对象状态;

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

5) 关闭对象输入流;