• 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 + "]";
        }
        
    }
  • 相关阅读:
    query and join operation after sharding
    Windows Phone中的几种集合控件
    什么是SOPA SOPA的危害
    自动刷新人人网API session_key方法
    Windows Phone XNA创建简单局域网游戏
    static 修饰MySqlConnection引发的异常
    $Dsu$ $on$ $Tree$ 复习
    $Noip$前的小总结哦
    $NOIP2018$ 暴踩全场计划实施方案
    $NOIP2018$ 爆踩全场记
  • 原文地址:https://www.cnblogs.com/qjlbky/p/5914592.html
Copyright © 2020-2023  润新知