1.序列化
2.对象的序列化流ObjctOutputStream
ObjectOutputStream(OutputStream out);
writeObject(Object obj);
- 创建类对象,构造方法填写写入目的地
- 使用
writeObject()
方法,写入数据
- 释放资源
- 要写入硬盘的对象必须实现
Serializable
接口,Serializable
接口相当于一个序列化和反序列化的标记
- 由
static
静态关键字修饰的静态成员变量,由transient
瞬态关键字修饰的成员变量,都不能被序列化
- 为了防止改变类后再反序列化会抛出序列号冲突异常,类中要写如下语句:
private static final long serialVersionUID= 1L;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID= 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
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 +
'}';
}
}
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class Demo08 {
public static void main(String[] args) throws IOException {
Person one = new Person("张三",18);
ObjectOutputStream file = new ObjectOutputStream(new FileOutputStream("G:\\Java\\测试文件夹\\person.txt"));
file.writeObject(one);
file.close();
}
}
3.对象的反序列化流ObjectInputStream
ObjectInputStream(InputStream in);
Object obj = writeObject();
- 创建类对象,构造方法填写输出源
- 使用
readObject()
方法,读取数据
- 释放资源
- 使用读取的对象
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class Demo7 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectInputStream file = new ObjectInputStream(new FileInputStream("G:\\Java\\测试文件夹\\person.txt"));
Object obj = file.readObject();
file.close();
System.out.println(obj);
((Person) obj).setAge(13);
((Person) obj).setName("李四");
System.out.println(obj);
}
}