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

  • 相关阅读:
    基于KNN的newsgroup 18828文本分类器的Python实现
    基于Bayes和KNN的newsgroup 18828文本分类器的Python实现
    C++笔试题
    一号店笔试题
    最长递增子序列
    雅虎2015校招--研究工程师
    百度2013校园招聘笔试题(答案整理) – 机器学习/数据挖掘工程师
    windows下Python shell代码自动补全
    windows下scrapy安装
    实验四
  • 原文地址:https://www.cnblogs.com/jnba/p/10535715.html
Copyright © 2020-2023  润新知