zoukankan      html  css  js  c++  java
  • Java 之 序列化流

    一、序列化概述

      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     }
  • 相关阅读:
    面试题21 包含min函数的栈
    面试题20 顺时针打印矩阵
    基于熵的方法计算query与docs相似度
    使用信息检索和深度学习方法的智能对话
    常用的激活函数
    spark实现smote近邻采样
    wide&deep用于ltr排序
    deepfm用于ltr排序
    lightgbm用于排序
    静态工厂方法+服务提供者框架模板
  • 原文地址:https://www.cnblogs.com/niujifei/p/11498638.html
Copyright © 2011-2022 走看看