一、序列化概述
Java 提供了一种对象 序列化 的机制。用一个字节序列可以表示一个对象,该字节序列包含该 对象的数据 、 对象的类型 和 对象中存储的属性 等信息。字节序列写出到文件之后,相当于文件中 持久保存 了一个对象的信息。
反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。 对象的数据 、 对象的类型 和 对象中存储的数据 信息,都可以用来在内存中创建对象。
图解序列化:
二、ObjectOutputStream 类
三、ObjectInputStream 类
四、案例:序列化集合
题目:将存有多个自定义对象的集合序列化操作,保存到 list.txt 文件中 ,反序列化 list.txt ,并遍历集合,打印对象信息。
代码实现:
1 /* 2 分析: 3 1.定义一个存储Person对象的ArrayList集合 4 2.往ArrayList集合中存储Person对象 5 3.创建一个序列化流ObjectOutputStream对象 6 4.使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化 7 5.创建一个反序列化ObjectInputStream对象 8 6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合 9 7.把Object类型的集合转换为ArrayList类型 10 8.遍历ArrayList集合 11 9.释放资源 12 */ 13 public static void main(String[] args) throws IOException, ClassNotFoundException { 14 //1.定义一个存储Person对象的ArrayList集合 15 ArrayList<Person> list = new ArrayList<>(); 16 //2.往ArrayList集合中存储Person对象 17 list.add(new Person("张三",18)); 18 list.add(new Person("李四",19)); 19 list.add(new Person("王五",20)); 20 //3.创建一个序列化流ObjectOutputStream对象 21 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\list.txt")); 22 //4.使用ObjectOutputStream对象中的方法writeObject,对集合进行序列化 23 oos.writeObject(list); 24 //5.创建一个反序列化ObjectInputStream对象 25 ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\list.txt")); 26 //6.使用ObjectInputStream对象中的方法readObject读取文件中保存的集合 27 Object o = ois.readObject(); 28 //7.把Object类型的集合转换为ArrayList类型 29 ArrayList<Person> list2 = (ArrayList<Person>)o; 30 //8.遍历ArrayList集合 31 for (Person p : list2) { 32 System.out.println(p); 33 } 34 //9.释放资源 35 ois.close(); 36 oos.close(); 37 }
原文地址:https://www.cnblogs.com/niujifei/p/11498638.html
时间: 2024-10-10 23:26:56