序列化流—存储对象的I/O
//序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。
// 对象–流数据 (objectOutputStream)
// 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。
// 流数据–对象(ObjectInputStrear
//NotSeriali zableException:未序列化异常
// 类通过实现java. io. Serializable接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。I
// 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口。|
// 使用transient关键字声明不需要序列化的成员变量
切记 切记 序列化流用的类,一定要继承Serializable
主函数:
package cn.study_08;
import java.io.*;
//序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。
// 对象--流数据 (objectOutputStream)
// 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。
// 流数据--对象(ObjectInputStrear
public class ObjectStreamDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
write();
read();
}
private static void read() throws IOException, ClassNotFoundException {
ObjectInputStream ois =
new ObjectInputStream(new FileInputStream("oos.txt"));
Object ss =ois.readObject();
System.out.println(ss);
ois.close();
}
private static void write() throws IOException {
ObjectOutputStream oos =
new ObjectOutputStream(new FileOutputStream("oos.txt"));
Student s =new Student("zsp",20);
oos.writeObject(s);
oos.close();
}
}
Student类:
package cn.study_08;
import java.io.Serializable;
//NotSeriali zableException:未序列化异常
// 类通过实现java. io. Serializable接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。I
// 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口。|
// 使用transient关键字声明不需要序列化的成员变量
public class Student implements Serializable {
private static final long serialVersionUID = 5758791193101684149L;
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
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 "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}