首页 > 软件开发 > JAVA >

java中的序列化和反序列化

来源:互联网 2023-03-16 19:32:05 444

将数据结构转换为字节的过程我们称之为序列化;反之将字节转换为数据结构的过程我们称之为反序列化;5uy办公区 - 实用经验教程分享!

方法/步骤

  • 1

    序列化和反序列化什么是序列化?将数据结构转换为字节的过程什么是反序列化?将字节转换为数据结构的过程5uy办公区 - 实用经验教程分享!

    如果想使用序列化和反序列化就要通过OOS 和 OIS序列化和反序列化必须要使用一个接口java.io.Serializable;实现该接口之后,还需要给该需要序列化的类提供一个类的版本号,这个类的版本号分厂重要,他影响着反序列化是否成功。5uy办公区 - 实用经验教程分享!

    5uy办公区 - 实用经验教程分享!

    java中的序列化和反序列化5uy办公区 - 实用经验教程分享!

  • 2

    反序列化的时候,他会先查看版本号和序列化的时候是否一致,如果不一致直接抛出异常,如果一致那么他会启动兼容模式,序列化的时候 没有的属性,在反序列的时候会使用默认值来代替。5uy办公区 - 实用经验教程分享!

    java中的序列化和反序列化5uy办公区 - 实用经验教程分享!

  • 3

    流是不是输出还是输入,相对的参照物是内存如果将一个文本文件的内容输入到控制台显示,首先需要将该文件的内容读取到内容,然后输出到控制台(输入流)5uy办公区 - 实用经验教程分享!

    java中的序列化和反序列化5uy办公区 - 实用经验教程分享!

  • 4

    public class Person implements Serializable{5uy办公区 - 实用经验教程分享!

    /** * 序列化的版本号 * 该版本号很重要 他影响着反序列化是否能够成功 */private static final long serialVersionUID = 1L;private String name;private Integer age;private Double salary;private String address;public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public Double getSalary() {return salary;}public void setSalary(Double salary) {this.salary = salary;}@Overridepublic String toString() {return "Person [name=" name ", age=" age ", salary=" salary ",address=" address "]";}}5uy办公区 - 实用经验教程分享!

    5uy办公区 - 实用经验教程分享!

    java中的序列化和反序列化5uy办公区 - 实用经验教程分享!

  • 4该信息未经许可获取自百度经验
  • 5

    import java.io.FileOutputStream;import java.io.ObjectOutputStream;5uy办公区 - 实用经验教程分享!

    /*** 序列化* 将数据结构---->字节* * ObjectOutputStream 高级流* */public class OOSDemo {public static void main(String[] args) throws Exception{Person p=new Person();p.setName("张三丰");p.setAge(22);/** * Double Integer 是兄弟关系 * 他们只能和自己相对应的基本类型做自动拆箱操作 * 2个包装类型和基本类型不一样,不能够自动转换。 */p.setSalary(6000.0);FileOutputStream fos=new FileOutputStream("Person.obj");ObjectOutputStream oos=new ObjectOutputStream(fos);oos.writeObject(p);oos.close();}}5uy办公区 - 实用经验教程分享!

    5uy办公区 - 实用经验教程分享!

    java中的序列化和反序列化5uy办公区 - 实用经验教程分享!

  • 6

    import java.io.FileInputStream;import java.io.ObjectInputStream;/*** 反序列化* 将字节--->数据结构*/public class OISDemo {public static void main(String[] args) throws Exception{FileInputStream fis=new FileInputStream("Person.obj");ObjectInputStream ois=new ObjectInputStream(fis);Person p=(Person)ois.readObject();System.out.println(p);ois.close();}}5uy办公区 - 实用经验教程分享!

    java中的序列化和反序列化5uy办公区 - 实用经验教程分享!

  • 注意事项

    • 流是不是输出还是输入,相对的参照物是内存

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!5uy办公区 - 实用经验教程分享!


    标签: JAVA

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码