Java连载102-对象类文件的序列化与反序列化

Posted 心悦君兮君不知-睿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java连载102-对象类文件的序列化与反序列化相关的知识,希望对你有一定的参考价值。

一、对象类文件的序列换与反序列化

1.java.io.ObjectOutputStream;序列化JAVA对象到硬盘

2.java.io.ObjectInputStream;将硬盘中的数据“反序列化”到JVM内存中

Compile编译(java->class)

DeCompile反编译(class->java)

3.标识性接口的作用:

JVM如果检查到该对象实现了某个标识接口,会对它进行特殊待遇

如下代码中的User102实现的接口Serializable

疑问:User102实现Serializable接口,JVM会对它的特殊待遇是什么?

 

package com.bjpowernode.java_learning;

import java.io.*;

import java.io.Serializable;

​

public class D102_1_ObjectOutputStream {

  public static void main(String[] args) throws IOException,ClassNotFoundException{

    //1.创建java对象

    User102 u1 = new User102("彭于晏");

   

    //2.创建输出流(序列化流)(JVM中的对象状态保存到硬盘中)

    String address = "C:\\\\\\\\Users\\\\\\\\lenovo1\\\\\\\\Workspaces\\\\\\\\MyEclipse CI\\\\\\\\Java_learning\\\\\\\\src\\\\\\\\com\\\\\\\\bjpowernode\\\\\\\\java_learning\\\\\\\\temp1.txt";

    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(address));

   

    //3.写入

    oos.writeObject(u1);//写进去的不是几个文字,而是一个字符串对象

   

    //4.刷新

    oos.flush();

    //5.关闭

    oos.close();

   

    //接下来我们需要把序列化的对象给读出来,也就是反序列化

    //6.创建反序列化流

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(address));

    //7.反序列化

    Object o = ois.readObject();

    System.out.println(o);

    //关闭

    ois.close();

  }

}

class User102 implements Serializable{//该接口是一个可序列化的,该接口没有任何方法,该接口是一个

  //标志性的接口,像这样的接口还有java.util.Cloneable

  String name;

  User102(String name){

    this.name=name;

  }

  public String toString() {

    return "User[name="+name+"]";

  }

}

二、源码:

D102_1_ObjectOutputStream.java

https://github.com/ruigege66/Java/blob/master/D102_1_ObjectOutputStream.java​

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客园:https://www.cnblogs.com/ruigege0000/

4.欢迎关注微信公众号:傅里叶变换,个人公众号,仅用于学习交流,后台回复”礼包“,获取大数据学习资料

 

 

以上是关于Java连载102-对象类文件的序列化与反序列化的主要内容,如果未能解决你的问题,请参考以下文章

java编程基础-序列化与反序列化

Java——Properties集合,Object序列化流与反序列化流,打印流,commons-IO文件工具类

Java核心类库-IO-对象流(实现序列化与反序列化)

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化

序列化与反序列化