zoukankan      html  css  js  c++  java
  • ObjectOutputStream&ObjectInputStream--对象流

    用于操作对象的流对象,对象的序列化
    ObjectInputStream ObjectOutputStream
    特点:用于操作对象。
    解决的问题:将对象持久化到硬盘
    功能:特有:writeObject();

    import java.io.BufferedWriter;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import java.io.OutputStreamWriter;
    
    public class ObjectStreamDemo {
    
        private static final String LINE_SEPARATOR = System.getProperty("line.separator");
    
        public static void main(String[] args) throws IOException, ClassNotFoundException {
            
            /*
             * 将一个对象存储到持久化设备上
             */
            
            writeObj();//对象的序列化
            
    //        readObj();//对象的反序列化
            
        }
    
        public static void readObj() throws IOException, ClassNotFoundException {
            
            //1.定义流对象关联存储了对象的文件。
            FileInputStream fis = new FileInputStream("tempfile\obj.object");
            
            //2.建立用于读取对象的功能对象
            ObjectInputStream ois = new ObjectInputStream(fis);
            
            Person obj = (Person)ois.readObject();
            
            System.out.println(obj.toString());
            
            
        }
    
        public static void writeObj() throws IOException {
            
            //1.明确存储对象的文件
            FileOutputStream fos = new FileOutputStream("tempfile\obj.object",true);
            
            //2.给操作文件对象加入写对象的功能。
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            
            //3.调用了写入对象的方法。
            
            oos.writeObject(new Person("wangcai",20));
            oos.write(LINE_SEPARATOR.getBytes());//换个行
            
            //4.关闭资源
            oos.close();
            
        }
    
    }
    import java.io.Serializable;
    
    /*
     * Person类的对象如果需要序列化,就需要实现Serializable标记接口
     * 该接口给需要序列化的类,提供了一个序列版本号,serialVersionUID
     * 该版本号的目的在于验证序列化的对象和对应的类是否版本匹配。
     */
    
    public class Person implements Serializable{
        /**
         * 给类显示声明一个序列版本号
         */
        private static final long serialVersionUID = 1L;
        private String name;    //数字签名:private,public...
        private transient/*瞬态关键字*/ int age;//防止数据被序列化
        public Person() {
            super();
        }
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public String toString() {
            return "Person [name=" + name + ", age=" + age + "]";
        }
        
    }
  • 相关阅读:
    angular ng-bind-html异常Attempting to use an unsafe value in a safe context处理
    JS执行机制详解,定时器时间间隔的真正含义
    es6入门4--promise详解
    es6入门3--箭头函数与形参等属性的拓展
    JS判断滚动条到底部,页面是否有滚动条
    js forEach跳出循环
    es6入门2--对象解构赋值
    前端开发与日常好玩的的小工具,网站与插件分享
    详解 线程池
    详解 volatile关键字 与 CAS算法
  • 原文地址:https://www.cnblogs.com/qjlbky/p/5914592.html
Copyright © 2011-2022 走看看