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;
    }
  • 相关阅读:
    Z遮罩层完全覆盖页面
    页面加载完成时
    文字超出不换行,用省略号表示
    去掉最后一个元素的边线
    电话点击即可拨打
    制作对话的三角形
    active在iphone上不起作用
    jquery选择后代以及toggle,toggleClass用法
    button点击变换颜色时出现一个蓝色边框
    表格边框的实现
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454035.html
Copyright © 2011-2022 走看看