博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列化和反序列化
阅读量:4511 次
发布时间:2019-06-08

本文共 2399 字,大约阅读时间需要 7 分钟。

 

序列化的存在是为了让他们离开内存空间,存入磁盘,以便长期保存。

反序列化就是把磁盘中的文件拿到内存中来。

 

以内存为基准,想内存中放数据就使用ObjectInputStream   

  从内存中取出数据到磁盘就使用ObjectOutputStream

只有实现了 Serializable或 Externalizable接口的类的对象才能被序列化。
实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以 采用默认的序列化方式 。

 

序列化使用的是 

  ObjectOutputStream对象   和  writeObject方法

反序列化使用的是ObjectInputStream   和readObject方法

 

1.创建一个Person类实现了Serializable接口

package cn.happy.Serialization;import java.io.Serializable;public class Person implements Serializable {     private static final long serialVersionUID = -5809782578272943999L;//序列化版本标识符     private int age;     private String name;     private String sex;    public static long getSerialVersionUID() {        return serialVersionUID;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }}

2.实现序列化和反序列化

package cn.happy.Serialization;import java.io.*;import java.text.MessageFormat;public class TestObjSerializeAndDeserialize {    public static void main(String[] args) throws Exception {                //序列化方法                SerializePerson();                //反序列化方法        Person p = DeserializePerson();        System.out.println(MessageFormat.format("name={0},age={1},sex={2}",p.getName(),p.getAge(),p.getSex()));    }    //序列化    private static void SerializePerson() throws Exception{
//记得声明异常,不然new FileOutputStream(new File("D:/序列化输入地址.txt"))会报错。 Person person=new Person(); person.setAge(12); person.setName("小明"); person.setSex("男"); //ObjectOutputStream将内存中的内容输出到磁盘中。 ObjectOutputStream outputStream=new ObjectOutputStream(new FileOutputStream(new File("D:/序列化输入地址.txt"))); outputStream.writeObject(person); System.out.println("序列化成功"); outputStream.close(); } //反序列化 private static Person DeserializePerson()throws Exception{ //使用ObjectInputStream写到内存 ObjectInputStream objectInputStream=new ObjectInputStream(new FileInputStream(new File("D:/序列化输入地址.txt"))); Person ps= (Person) objectInputStream.readObject(); System.out.println("反序列化成功"); return ps; }}

 

结果:

 

转载于:https://www.cnblogs.com/java-263/p/10171176.html

你可能感兴趣的文章
CCF系列之图像旋转(201503-1)
查看>>
edit.h 再转换到 VS2010 的问题
查看>>
POJ 3134 Power Calculus ★(记录状态的BFS)
查看>>
POJ 3678 Katu Puzzle(POJ 六道2-SAT之一)
查看>>
面向对象初识
查看>>
LeetCode: Find All Duplicates in an Array
查看>>
免费计算机编程类中文书籍
查看>>
mysql之TIMESTAMP(时间戳)用法详解
查看>>
JS笔记——Function类型(JS笔记系列)
查看>>
抽象类入门常见错误
查看>>
javascript修改html <b>标签里面的内容
查看>>
open live writer安装以及代码高亮、折叠插件安装
查看>>
消息队列
查看>>
POJ 1321 棋盘问题 dfs回溯
查看>>
org.apache.catalina.LifecycleException异常的处理
查看>>
C++转向C#的疑惑:难道C#中没有拷贝构造函数 ?[转]
查看>>
计算一个整数二进制中1的个数
查看>>
netdom join 错误:指定的域不存在,或无法联系。
查看>>
Android中Dialog的使用
查看>>
12/10/2015 校内测试:数列
查看>>