Uso del flujo de deserialización

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectInputStream;

/*
    java.io.ObjectInputStream extends InputStream
    ObjectInputStream:对象的反序列化流
    作用:把文件中保存的对象,以流的方式读取出来使用

    构造方法:
        ObjectInputStream(InputStream in)创建从指定 InputStream读取的ObjectInputStream.
        参数:
            InputStream in:字节输入流
    特有的成员方法:
        Object readObject()从ObjectInputStream读取对象。

    使用步骤:
        1.创建ObjectInputStream对象,构造方法中传递字节输入流
        2.使用ObjectInputStream对象中的方法readObject读取保存对象的文件
        3.释放资源
        4.使用读取出来的对象(打印)

       
 */
public class Demo04 {
    
    
    public static void main(String[] args) throws IOException, ClassNotFoundException {
    
    
        //1.创建ObjectInputStream对象,构造方法中传递字节输入流
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("C:\\Users\\why\\Desktop\\untitled\\src\\test\\a.txt"));
        //2.使用ObjectInputStream对象中的方法readObject读取保存对象的文件
        /*
            readObject方法声明抛出了ClassNotFoundException(Class文件找不到异常)
            当不存在对象的class文件时抛出此异常
            反序列化的前提:
                1.类必须实现Serializable
                2.必须存在对应的class文件
       
         */
        Object o = ois.readObject();
        //3.释放资源
        ois.close();
        //4.使用读取出来的对象(打印)
        System.out.println(o);
        Person p = (Person)o;
        System.out.println(p.getName()+p.getAge());
    }
}

Esta es la clase de Preson utilizada

import java.io.Serializable;

public class Person implements Serializable {
    
    
    private String name;
    private int age;

    public Person() {
    
    
    }

    public Person(String name, int age) {
    
    
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
    
    
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
    
    
        return name;
    }

    public void setName(String name) {
    
    
        this.name = name;
    }

    public int getAge() {
    
    
        return age;
    }

    public void setAge(int age) {
    
    
        this.age = age;
    }
}

Esta es una secuencia serializada

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class Demo03 {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //序列化和反序列化
        //创建一个ObjectOutputStream对象,构造方法中传递字节输出流
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("C:\\Users\\why\\Desktop\\untitled\\src\\test\\a.txt"));
        //使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
        oos.writeObject(new Person("小美女",12));
        //释放资源
        oos.close();
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_41977380/article/details/112599240
Recomendado
Clasificación