zoukankan      html  css  js  c++  java
  • 序列化和反序列化

    一、定义:什么是序列化?什么是反序列化?
             序列化:把java对象转化为字节序列的过程
             反序列化:把字节序列恢复为java对象的过程
    二、作用
            (1)把对象的字节序列永远保存在磁盘上。(持久化对象)
            (2)可以将java对象以字节序列的方式在网络传输。(网络传输对象)
    三、如何实现
             对象必须实现Serializable或Externalizable接口中的一个
     
             如果对序列化的需求非常简单,没有对序列化过程控制的需求,可以简单实现Serializable接口即可

       代码:创建一个类,实现Serializable接口

             import java.io.Serializable;
             public class Person implements Serializable{

                    // 阻止成员变量序列化  transient 例:private transient int age;  age变不能被序列化

                  private String name;
                  private int age;
                  //构造有参函数
                  public Person(String name,int age){
                       this.name=name;
                       this.age=age;
                }
                  public String getName() {
            return name;
            }
              public void setName(String name) {
            this.name = name;
            }
              public int getAge() {
            return age;
            }
              public void setAge(int age) {
            this.age = age;
            }
                  
              @Override
              public String toString() {
            return "Demo1Person [name=" + name + ", age=" + age + "]";
                }
             }
            //对对象进行序列化
           public class Demo1ObjectStream{
               public static void main(String[] args) throws Exception{
                  //创建字节输出流对象,并绑定目的地
                  FileOutputStream fos=new FileOutputStream("d:\Object.txt");
                  //创建写出对象的序列化流的对象 构造方法传递字节输出流
                  ObjectOutputStream oos=new ObjectOutputStream(fos);
                  Person p=new Person("徐凤年",25);
                  //writeObject() 写
                  oos.writeObject(p);
                  oos.close()
               }    
            }
            //反序列化 将文件中的序列化字符转化为对象
          public class Demo2ObjectStream{
              public static void main(String[] args) throws Exception{
                 FileInputStream fis=new FileInputStream("d:\Object.txt");
                 //创建反序列化流     readObject()  读对象
                 ObjectInputStream ois=new ObjectInputStream(fis);
                 Object ob=ois.readObject();
                 System.out.println(ob);
                 ois.close();
             }
          }


































  • 相关阅读:
    fiddler的使用
    redis pipeline
    redis hash map
    redis队列的实现
    PHP-redis中文文档-命令
    websocket
    c++之socket,阻塞模式
    Django上传文件和修改date格式
    通过字符串导入模块
    'CSRFCheck' object has no attribute 'process_request' 报错
  • 原文地址:https://www.cnblogs.com/fbbg/p/10623554.html
Copyright © 2011-2022 走看看