本文共 1910 字,大约阅读时间需要 6 分钟。
package com.cug.datastream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;/* * 序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 -- 流数据(ObjectOutputStream) * 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。流数据 -- 对象(ObjectInputStream) */public class ObjectInputStreamDemo { public static void main(String[] args) throws IOException, ClassNotFoundException {// write(); read(); } private static void write() throws IOException{ ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.txt")); Person p = new Person("zhu",21); oos.writeObject(p); oos.close(); } private static void read() throws IOException, ClassNotFoundException{ ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt")); Object obj = ois.readObject(); ois.close(); System.out.println(obj); }}
package com.cug.datastream;import java.io.Serializable;/* * 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 * 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口。 */public class Person implements Serializable{ /* * Exception in thread "main" java.io.InvalidClassException: * com.cug.datastream.Person; local class incompatible: * stream classdesc serialVersionUID = 6071311591162915649, * local class serialVersionUID = 1971608717899087914 */ //加上此句话是为了防止上述错误 private static final long serialVersionUID = 6071311591162915649L; private String name; int age;// private transient int age; //transient关键字表示该成员变量不进行序列化 public Person() { super(); } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }
转载地址:http://cmhkb.baihongyu.com/