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());
        }
    }
  • 相关阅读:
    React在componentDidMount里面发送请求
    React 术语词汇表
    React里受控与非受控组件
    React和Vue等框架什么时候操作DOM
    【LeetCode】79. Word Search
    【LeetCode】91. Decode Ways
    【LeetCode】80. Remove Duplicates from Sorted Array II (2 solutions)
    【LeetCode】1. Two Sum
    【LeetCode】141. Linked List Cycle (2 solutions)
    【LeetCode】120. Triangle (3 solutions)
  • 原文地址:https://www.cnblogs.com/viplanyue/p/12700441.html
Copyright © 2011-2022 走看看