美文网首页
Java序列化学习笔记

Java序列化学习笔记

作者: 二枚目 | 来源:发表于2018-07-24 10:56 被阅读9次

序列化概念

首先弄清楚序列化是什么,官方解释:把对象转换为字节序列的过程。简单地说就是将对象导出成文件。反序列化相反。
它能做什么:可以把内存中的对象状态保存到一个文件中或者数据库;实现在网络上传送对象的字节序列;
如何做:实现Serializable接口。

序列化步骤

对象序列化包括如下步骤:
1) 创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;
2) 通过对象输出流的writeObject()方法写对象。

对象反序列化的步骤如下:
1) 创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;
2) 通过对象输入流的readObject()方法读取对象。

序列化实例

定义一个User类,并让它实现Serializable接口。

private int uid;
private String username;
private String password;
getters and setters......

在写User类的时候,会看到这样一条警告:The serializable class User does not declare a static final serialVersionUID field of type long.即需要一个​序​列​化​的​版​本​号,Eclipse自动生成serialVersionUID的方法有两种"add default serial version ID"和"add generated serial version ID",两种都可以,只要保证在同一个类中,不同版本根据兼容需要,是否更改serialVersionUid即可。

序列化和反序列化User类对象

spublic static void main(String[] args) throws Exception {
    //创建一个User对象并序列化
    User user = new User(1001, "admin", "123456");
    SerializeUser(user);
    //将文件反序列化成User对象
    User user2 = DeserializeUser();
    System.out.println(user2.toString());
}
private static void SerializeUser(User user) throws IOException {
    // ObjectOutputStream 对象输出流,将对象存储到E盘的txt文件中,完成对user对象的序列化操作 ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream( new File("E:/user.txt")));
    oos.writeObject(user);
    System.out.println("user对象序列化成功......");
    oos.close();
}
private static User DeserializeUser() throws Exception, IOException {
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream( new File("E:/user.txt")));
    User user = (User) ois.readObject();
    System.out.println("文件反序列化成功......");
    return user;
}

运行结果,的控制台输出如下:

发现E盘下新增user.txt文件,总结一下:序列化一个对象,首先要创建OutputStream对象,然后将其封装在一个ObjectOutputStream对象内。调用writeObject()即可将对象序列化,并将其发送给OutputStream。要将一个序列重组为一个对象,需要将一个InputStream封装在ObjectInputStream内,然后调用readObject()。

相关文章

  • Java Redis Jedis 简单学习

    转载自Java Redis Jedis--学习笔记代码片断--序列化

  • Java-序列化-反序列化

    Thanks Java基础学习总结——Java对象的序列化和反序列化java序列化反序列化原理Java 序列化的高...

  • Java序列化

    Java序列化的几种方式以及序列化的作用 Java基础学习总结——Java对象的序列化和反序列化

  • 序列化与反序列化

    Java基础学习总结——Java对象的序列化和反序列化 一、序列化和反序列化的概念 把对象转换为字节序列的过程称为...

  • Java序列和反序列,看这一篇就够了

    前言 java的序列化和反序列化内容是java学习的基础之一,java的序列化常见于网络中的对象传输以及内存对象持...

  • java序列化那些事儿

    java序列化作用 在说java序列化的作用之前,先说下什么是java序列化吧。java序列化是指把java对象转...

  • Java序列化学习笔记

    序列化概念 首先弄清楚序列化是什么,官方解释:把对象转换为字节序列的过程。简单地说就是将对象导出成文件。反序列化相...

  • java序列化学习笔记

    概念 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。 这两个过程结...

  • 序列化

    序列化 学习资料 Java对象的序列化与反序列化-HollisChuang’s Blog 《成神之路-基础篇》Ja...

  • Java序列化机制

    Java序列化机制 序列化和反序列化 Java序列化是Java内建的数据(对象)持久化机制,通过序列化可以将运行时...

网友评论

      本文标题:Java序列化学习笔记

      本文链接:https://www.haomeiwen.com/subject/kckemftx.html