zoukankan      html  css  js  c++  java
  • Java对象的序列化和反序列化

    Java对象的序列化和反序列化

    一:序列化和反序列化的概念。

    两个用于从流中读取对象

    序列化:将对象转换字节序列的过程称为对象的序列化。

    反序列化:将字节序列恢复为原对象的过程称为对象的反序列化。(把对象的字节序列永久的保存到硬盘上,通常放一个文件)。

    二:JDK库中的序列化API

    反序列化流:ObjectInputStrean,它的readObject()方法从持久化存储中把对象读取出来。

    序列化流:ObjectOutputStream,它的writeObject()方法将字节序列永久的写入硬盘上。

    对象序列化过程:

    1、创建一个对象输出流ObjectOutputStream。

    2、通过输出流的writeObject()方法写对象。

    反序列化过程:

    1、创建一个对象输入流ObjectInputStream。

    2、通过输入流的readObject()方法读对象

    例子:

    定义一个person类,实现 Serializable接口

     1 package com.aaa.demo4;
     2 
     3 import java.io.Serializable;
     4 
     5 public class Demo1Person implements Serializable{
     6     public String name;
     7     public int age;
     8     public Demo1Person() {
     9     }
    10     public Demo1Person(String name, int age) {
    11         super();
    12         this.name = name;
    13         this.age = age;
    14     }
    15     public String getName() {
    16         return name;
    17     }
    18     public void setName(String name) {
    19         this.name = name;
    20     }
    21     public int getAge() {
    22         return age;
    23     }
    24     public void setAge(int age) {
    25         this.age = age;
    26     }
    27     @Override
    28     public String toString() {
    29         return "Demo1Person [name=" + name + ", age=" + age + "]";
    30     }
    31     
    32 }

    序列化和反序列化Person对象:

     1 package com.aaa.demo4;
     2 
     3 import java.io.FileInputStream;
     4 import java.io.FileNotFoundException;
     5 import java.io.FileOutputStream;
     6 import java.io.ObjectInputStream;
     7 import java.io.ObjectOutputStream;
     8 
     9 public class Demo1ObjectStream {
    10     public static void main(String[] args) throws Exception {
    11         writeObject();//序列化对象
    12         readObject();//反序列化对象
    13     }
    14     public static void readObject() throws Exception{
    15         FileInputStream fis=new FileInputStream("c:\person.txt");
    16         //创建反序列化流 readObject() 读对象
    17         ObjectInputStream ois=new ObjectInputStream(fis);
    18         Object obj=ois.readObject();
    19         System.out.println(obj);
    20         ois.close();
    21     }
    22     public static void writeObject() throws Exception{
    23         FileOutputStream fos=new FileOutputStream("c:\person.txt");
    24         //创建写出对象的序列化的对象 构造方法传递字节输出流
    25         ObjectOutputStream oos=new ObjectOutputStream(fos);
    26         Demo1Person p=new Demo1Person("大冰",23);
    27         oos.writeObject(p);
    28         oos.close();
    29     }
    30 }
  • 相关阅读:
    C# TcpServer调试工具
    C#调用百度AI开发平台
    MVC 身份证图像识别(调用dll)
    12.智能快递柜(其他功能)
    智能信报箱
    北斗卫星短信平台
    11.智能快递柜(用户寄件)
    WindowServer优化
    13.智能快递柜(对接流程)
    sublime text3 手动安装插件package control
  • 原文地址:https://www.cnblogs.com/yanpingping/p/10611509.html
Copyright © 2011-2022 走看看