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

  • 相关阅读:
    centos基于.net的第一个asp项目
    centos创建第一个 .NET app
    centos搭建.net3.1环境
    ASP.NET Core 的 Docker 映像
    centos+python2+django+nginx+uwsgi环境搭建
    centos+python2+flask+nginx+uwsgi环境搭建
    centos+python2+apache2+flask环境搭建
    小程序字体转换
    小程序播放语音之wx.createInnerAudioContext()
    小程序隐藏scroll-view滚动条的实现
  • 原文地址:https://www.cnblogs.com/jnba/p/10535715.html
Copyright © 2011-2022 走看看