(对象序列化)序列化与反序列化处理

序列化与反序列化处理

有了序列化的支持类之后如果想实现序列化与反序列化的操作则可以利用以下两个类完成:

类名称 序列化:ObjectOutputSteam 反序列化:ObjectIntputStream
类定义
public class ObjectOutputStream 
extends OutputStream
implements ObjectOutput, ObjectStreamConstants
public class ObjectInputStream
extends InputStream
implements ObjectInput, ObjectStreamConstants
构造方法
public ObjectOutputStream​(OutputStream out)
                   throws IOException
public ObjectInputStream​(InputStream in)
                  throws IOException
操作方法
public final void writeObject​(Object obj)
                       throws IOException
public final Object readObject()
                        throws IOException,
                               ClassNotFoundException

范例:实现序列化与反序列化

package 序列化;

import java.io.*;

public class 序列化的基本概念{

    private static final File SAVE_FILE = new File("D:\\Test\\person.person");

    public static void main(String[] args) throws Exception{

        //序列化,完成后生成person.person文件
        saveObject(new Person("张三",18));
        //反序列化
        System.out.println(loadObject());

    }

    public static void saveObject(Object obj) throws Exception{

        ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(SAVE_FILE));
        objectOutputStream.writeObject(obj);  //序列化
        objectOutputStream.close();

    }

    public static Object loadObject() throws Exception{

        ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(SAVE_FILE));
        Object obj = objectInputStream.readObject(); //反序列化
        objectInputStream.close();
        return obj;
    }
}

class Person implements Serializable{   //Person类可以被序列化

    private String name;
    private int age;

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

    @Override
    public String toString(){
        return "姓名:"+this.name+"、年龄:"+this.age;
    }
}

姓名:张三、年龄:18

在java中的序列化和反序列化必须使用内部提供的对象操作流,因为这里面牵扯到二进制数据的格式,所以不能自定义处理,如果要想实现一组对线的序列化,则可以使用对象数组完成。

在很多实际项目的开发过程中,开发者很多少能够见到这两个类,因为很多容器帮助开发者自动实现。

猜你喜欢

转载自blog.csdn.net/weixin_46245201/article/details/112987014