JavaIO - 操作对象的流

ObjectInputStream(InputStream in):反序列化 - 把存储的对象从设备中读出,对象是依赖于其所属的类的

使用readObject()方法读取一个对象文件。使用对象的使用需要强转将obj转换为使用的对象类型

ObjectOutputStream(OutputStream out):序列化 - 把对象进行持久的储存

对象输出流使用writeObject(Object obj)方法,将一个obj对象(必须实现Serializable接口)写入到一个文件。

● Serializable序列化接口,用于给被序列化的类加入ID号,判断类和对象是否是同一个版本。

可序列化类通过声明为"serialVersionUID"字段(该字段必须是静态static、最终final的long型字段)显示声明自己的serialVersionUID;
如果序列化类未显示声明serialVersionUID,则序列化运行时将基于该类的各个方面计算的默认serialVersionUID值。

- 强烈建议:所有可序列话的类都显示声明serialVersionUID;

- transient:瞬态,不参与序列化;表示暂时的,这个属性不会被写入磁盘;

 

package cn.itcast.io.p3.ObjectStream;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

import cn.itcast.io.p3.bean.Persion;

public class ObjectStreamDemo {

    public static void main(String[] args) throws Exception {
        
        // writeObject();
        readObject();

    }

    public static void readObject() throws IOException, Exception{
        
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("persion.object"));
        // 对象的反序列化。
        Persion obj = (Persion)ois.readObject();
        System.out.println(obj.getName()+":"+obj.getAge());
        
        ois.close();
    }

    public static void writeObject() throws IOException {
    
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("persion.object"));
        // ObjectOutputStream oos = new ObjectOutputStream(System.out);
        // 对象的序列化,将对象排队存储到硬盘上。序列化必须实现serializable接口
        oos.writeObject(new Persion("小强",30));
        
        oos.close();
    }
}

猜你喜欢

转载自www.cnblogs.com/Dm920/p/12461722.html
今日推荐