zoukankan      html  css  js  c++  java
  • IO流(1)—之序列化与反序列化

    1.概念

    序列化:把Java对象转换为字节序列的过程称为对象的序列化
    反序列化:把字节序列恢复为Java对象的过程称为对象的反序列化

    注:只有实现了Serializable和Externalizable接口的类的对象才能被序列化

    2.作用:

    • 对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

    • 网络上传送对象的字节序列。

    3.流:

    java.io.ObjectOutputStream代表对象输出流

    • writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。

    java.io.ObjectInputStream代表对象输入流

    • writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。

    4.步骤:

    • 首先要有一个类,一个实现Serializable和Externalizable接口的类

    序列化

    • 创建文件输出流FileOutputStream
    • 创建对象流ObjectOutStream
    • 调用writeObject(Object obj)方法把对象作为参数传进去
    • 最后调用flush()和close()方法关闭流

    反序列化

    • 创建文件输入流FileInputStream
    • 创建对象流ObjectInputStream
    • 对象流引用调用方法readObject()再强转成实现Serializable和Externalizable接口的类的类型
    • 输出对象的属性

    5.例子

    package IO;
    /**
     * 对象序列化和反序列化
     * 想要序列化某个对象,必须实现Serializable接口,该接口用于标记该类可以序列化
     */
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.Serializable;
    
    public class ObjectTest {
    
        public static void main(String[] args) throws Exception{
            T t = new T();
            t.k  = 8;
            //序列化
            FileOutputStream fos = new FileOutputStream("hello1.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);  
            oos.writeObject(t);
            oos.flush();
            oos.close();
            //反序列化
            FileInputStream fis = new FileInputStream("hello1.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            T tReader = (T)ois.readObject();
            System.out.println(tReader.i+" "+tReader.j+" "+tReader.k+" "+tReader.d);
    
        }
    
    }
    class T implements Serializable{
        int i = 0;
        int j = 9;
        double d = 2.3;
        int k = 0;
    }
  • 相关阅读:
    .net学习笔记----WebConfig常用配置节点介绍
    .net学习笔记----会话状态Session
    .net学习笔记---HttpRuntime类
    最优化基础(三)
    最优化基础(二)
    最优化基础(一)
    非精确线搜索
    精确线搜索——抛物线法
    Matlab自定义函数的几种方法
    精确线搜索-黄金分割法
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454035.html
Copyright © 2011-2022 走看看