zoukankan      html  css  js  c++  java
  • Java第三十四天,IO操作(续集),非基本对象的读写——序列化流

    一、序列化与反序列化

    以前在对文件的操作过程当中,读写的对象都是最基本的数据类型,即非引用数据类型。那么如果我们对饮用数据类型(即对象类型)数据进行读写时,应该如何做呢?这就用到了序列化与反序列化。

    需要注意的是:

    1.任何利用序列化流读写的对象,都必须实现 Serializable 接口。该接口并没有任何抽象方法,只是单纯的起到了标志的作用

    2.反序列化流使用时,必须存在用到的

    二、ObjectOutputStream

    该类是序列化输出流类,用于写数据

    1.构造方法

    ObjectOutputStream(OutputStream out)

    2.常用方法

    void writeObject(Object obj) ===> 将指定的对象写入ObjectOutputStream

    3.具体使用

    对象类:

    import java.io.Serializable;
    
    public class Student implements Serializable {
        private int age;
        private String depart;
    
        Student(int age, String depart){
            this.age = age;
            this.depart = depart;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getDepart() {
            return depart;
        }
    
        public void setDepart(String depart) {
            this.depart = depart;
        }
    }
    

    应用类:

    import java.io.*;
    
    public class MyObject {
        public static void main(String[] args) throws IOException {
            Student student = new Student(20,"软件技术");
            ObjectOutputStream file = new ObjectOutputStream(new FileOutputStream("F:\object.txt"));
            file.writeObject(student);
            file.close();
        }
    }

    三、ObjectInputStream

    该类是反序列化输入流,用于读取数据

    1.构造方法

    ObjectInputStream(InputStream in)

    2.常用方法

    Object readObject() ===> 从ObjectInputStream读取一个对象

    3.使用方法

    import java.io.*;
    
    public class MyObject {
        public static void main(String[] args) throws IOException, ClassNotFoundException {
       
            ObjectInputStream file = new ObjectInputStream(new FileInputStream("F:\object.txt"));
            Object object = file.readObject();
            file.close();
            Student student = (Student)object;
            System.out.println(student.getAge() + " " + student.getDepart());
        }
    }
  • 相关阅读:
    【Atcoder】CODE FESTIVAL 2017 qual C D
    【BZOJ】4756: [Usaco2017 Jan]Promotion Counting
    【Luogu】P3933 Chtholly Nota Seniorious
    【BZOJ】1914: [Usaco2010 OPen]Triangle Counting 数三角形
    【算法】计算几何
    【BZOJ】1774: [Usaco2009 Dec]Toll 过路费
    【BZOJ】2200: [Usaco2011 Jan]道路和航线
    【BZOJ】1833 [ZJOI2010]count 数字计数
    【BZOJ】1731: [Usaco2005 dec]Layout 排队布局
    【BZOJ】1577: [Usaco2009 Feb]庙会捷运Fair Shuttle
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700441.html
Copyright © 2011-2022 走看看