对象的序列化流_ObjectOutputStream,对象的反序列化流_ObjectInputStream

对象的序列化流_ObjectOutputStream:

序列化和反序列化的时候,会抛出NotSerializableException没有序列化异常

类通过实现java.io.Serializable接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。

Serializable接口也叫标记型接口

要进行序列化和反序列化的类必须实现Serializable接口,就会给类添加一个标记

当我们进行序列化和反序列化的国候,就会检测类上是否有这个标记

有:就可以序列化和反序列化

没有:就会抛出NotSerializableException异常

去市场买肉-->肉上有一个蓝色章(检测合格)-->放心购买-->买回来怎么吃随意

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

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

    public Person() {

    }

    public int getAge() {
        return age;
    }

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

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

java.io.objectoutputstream _extends outputstream

objectoutputstream:对象的序列化流

构造方法:

objectoutputStream(OutputStream out)创建写入指定outputStream的 0bjectoutputStream。

参数:

outputstream out:字节输出流

特有的成员方法:

void write0bject(object obj)将指定的对象写入、objectoutputStreamo

使用步骤:

1.创建objectoutputstream对象,构造方法中传递字节输出流

2.使用objectoutputstream对象中的方法writeobject,把对象写入到文件中

3.释放资源

public class fanxulie {
    public static void main(String[] args) throws IOException {
        //1.创建objectoutputstream对象,构造方法中传递字节输出流
        ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(""));
        //2.使用objectoutputstream对象中的方法writeobject,把对象写入到文件中
        stream.writeObject(new Person("将神",19));
        //3.释放资源
        stream.close();
    }
}

 

 

 

 

 

 

对象的反序列化流_ObjectInputStream:

java.io.0bjectInputstream extends Inputstream

Objectinputstream:对象的反序列化流

作用:把文件中保存的对象,以流的方式读取出来使用

构造方法:

objectInputStream(InputStream in)创建从指定Inputstream 读取的objectInputStream。

参数:

rnputStream in :字节输入流

特有的成员方法:

object readobject() 从objectInputstream读取对象。

使用步骤;

1.创建objectinputStream对象,构造方法中传递字节输入流

2.使用objectInputstream对象中的方法readobject读取保存对象的文件

3.释放资源

 4.使用读取出来的对象

readobject方法声明抛出了classNotFoundException(class文件找不到异常)

当不存在对象的cLass文件时抛出此异常

反序列化的前提:

1.类必须实现serializable

2.bxu

public class fanxuliehua {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //1.创建objectInputstream对象,构造方法中传递字节输入流
        ObjectInputStream stream = new ObjectInputStream(new FileInputStream("taigang.txt"));
        //2.使用objectInputstream对象中的方法readobject读取保存对象的文件
        Object object = stream.readObject();
        //3.释放资源
        stream.close();
        //4.使用读取出来的对象(打印)
        System.out.println(object);
        Person pe = (Person)object;
        System.out.println(pe.getName()+pe.getAge());
    }
}

 

 

posted @ 2022-07-14 13:13  冰灵IT  阅读(25)  评论(0)    收藏  举报