package com.itheima.demo04.ObjectStream;
import java.io.*;
import java.util.ArrayList;
/*
练习:序列化集合
当我们想在文件中保存多个对象的时候
可以把多个对象存储到一个集合中
对集合进序列化和反序列化
分析:
1. 定义一个存储 Person 对象的 ArrayList 集合
2. 往 ArrayList 集合中存储 Person 对象
3. 创建一个序列化流 ObjectOutputStream 对象
4. 使用 ObjectOutputStream 对象中的方法 writeObject, 对集合进行序列化
5. 创建一个反序列化 ObjectInputStream 对象
6. 使用 ObjectInputStream 对象中的方法 readObject 读取文件中保存的集合
7. 把 Object 类型的集合转换为 ArrayList 类型
8. 遍历 ArrayList 集合
9. 释放资源
*/
public class Demo03Test {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//1. 定义一个存储 Person 对象的 ArrayList 集合
ArrayList<Person> list = new ArrayList<>();
//2. 往 ArrayList 集合中存储 Person 对象
list.add(new Person("张三",18));
list.add(new Person("李四",19));
list.add(new Person("王五",20));
//3. 创建一个序列化流 ObjectOutputStream 对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("10_IO\\list.txt"));
//4. 使用 ObjectOutputStream 对象中的方法 writeObject, 对集合进行序列化
oos.writeObject(list);
//5. 创建一个反序列化 ObjectInputStream 对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("10_IO\\list.txt"));
//6. 使用 ObjectInputStream 对象中的方法 readObject 读取文件中保存的集合
Object o = ois.readObject();
//7. 把 Object 类型的集合转换为 ArrayList 类型
ArrayList<Person> list2 = (ArrayList<Person>)o;
//8. 遍历 ArrayList 集合
for (Person p : list2) {System.out.println(p);
}
//9. 释放资源
ois.close();
oos.close();}
}