zoukankan      html  css  js  c++  java
  • IO编程之对象序列化

    对象序列化的目标是将对象保存在磁盘中或者允许在网络中直接传输对象。对象序列化机制循序把内存中的java对象转换成平台无关的二进制流,从而允许把这种二进制流持久的保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流,都可以将这种二进制流恢复成原来的java对象。

    对象序列化样例:

    public class People implements Serializable {
         
        public People(String name,String sex) {
            this.name = name;
            this.sex = sex;
        }
     
        private String name ;
        private String sex;
         
        public String getName() {
            return name;
        }
        public String getSex() {
            return sex;
        }
        @Override
        public String toString() {
            return "我的名字:"+name+" "+"我的性别是:"+sex;
        }
         
         
    }
     
    public class SerializableTest {
         
         
        /**
         * 对象序列化到磁盘文件中
         */
        @Test
        public void writeObject() {
            try (
            //ObjectOutputStream是一个处理流,构造的时候需要节点流
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("G://test//people.txt"));
                )
            {
                oos.writeObject(new People("张三","男"));
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
         
        /**
         * 反序列化
         * 
         */
        @Test
        public void readObject() {
             
            try (
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("G://test//people.txt"));
            )
            {
                People p = (People)ois.readObject();
                System.out.println(p.toString());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
         
         
    }

    对象引用的序列化:如果有一个类的的属性是应用类型,那么这个引用类必须是可序列化的。当序列化该类时,程序会顺便属性字段的对象也进行序列化。

    如果某个类含有敏感信息,例如银行账户信息等,这时不希望系统将该字段序列化,则通过transient关键字修饰Field,则该Field不会被序列化。

  • 相关阅读:
    [Ansible]copy 模块
    [Ansible]script模块
    [Ansible]command shell模块
    [Ansible]Systemd 模块
    [Ansible]YUM 模块
    [Ansible]yum_repository模块 添加 删除yum源
    [Ceph]osd 无法启动 start request repeated too quickly for ceph-osd@1.service
    [Ceph]pool 删除 Error EPERM: pool deletion is disabled; you must first set the mon_allow_pool_delete config option to true before you can destroy a pool
    题解 烷基计数 加强版 加强版
    Polya 定理 学习笔记
  • 原文地址:https://www.cnblogs.com/jnba/p/10535715.html
Copyright © 2011-2022 走看看