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不会被序列化。

  • 相关阅读:
    orm 对象关系映射 指 表与类之间的映射 # 40
    事务 视图 触发器 函数 (内置) 存储过程 流程控制 索引 # 39
    exist 存在 Python操作mysql pymysql sql注入问题 # 38
    基本查询语句与方法 多表查询 # 37
    外键 #36
    存储引擎 索引 数据类型 约束条件 # 35
    mysql安装 登录 修改密码 库,表,记录(增删改查) # 34
    进程池和线程池 协程 # 33
    GIL全局解释器锁
    # 并发编程 -进程理论-进程的方法
  • 原文地址:https://www.cnblogs.com/jnba/p/10535715.html
Copyright © 2011-2022 走看看