• I/O(输入/输出)---序列化与反序列化


    概念:

      序列化就是将对象的状态存储到特定的介质中的过程,也就是将对象状态转换为可保持或传输格式的过程。

      反序列化则是从特定存储介质中将数据重新构建对象的过程。可以将存储在文件上的对象信息读取,然后重新构建为对象。

    过程:

      将对象的公有成员、私有成员包括类名,转换为字节流---》写入数据流---》存储到存储介质中(文件)。

    意义:

      将java对象序列化后,可以将其转换为自己序列,这样就可以保存在磁盘上,也可以借助网络进行传输。

      对象的保存是二进制状态,实现了平台的无关性。

    import java.io.Serializable;
    /*
     * Serializable:用于给被序列化的类加入ID号。
     * 用于判断类和对象是否是同一个版本。 
     */
    //Person诶实现Serializable接口,代表这个类可被序列化
    public class Person implements Serializable/*标记接口*/ {
    
        /**
         * transient:非静态数据不想被序列化可以使用这个关键字修饰。 
         */
        private static final long serialVersionUID = 9527l;
        private transient String name;
        private static int age;
        
        
        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;
        }
        
    }
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    import cn.itcast.io.p2.bean.Person;
    
    public class ObjectStreamDemo {
    
        /**
         * @param args
         * @throws IOException 
         * @throws ClassNotFoundException 
         */
        public static void main(String[] args) throws IOException, ClassNotFoundException {
                
    //        writeObj();
            readObj();
        }
    
        public static void readObj() throws IOException, ClassNotFoundException {
            //ObjectInputStream 对象输入流
            ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.object"));
            //对象的反序列化。需要类型转换。 
            Person p = (Person)ois.readObject();
            
            System.out.println(p.getName()+":"+p.getAge());
            
            ois.close();
            
        }
    
        public static void writeObj() throws IOException, IOException {
            //ObjectInputStream 对象输出流
            ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.object"));
            //对象序列化。  被序列化的对象必须实现Serializable接口。 
            oos.writeObject(new Person("小强",30));
            
            oos.close();
            
            
            
        }
    
    }
  • 相关阅读:
    linux内核initrd文件自定义方法
    Linux2.6 内核的 Initrd 机制解析
    Linux 系统裁剪笔记 4 (内核配置选项及删改)
    Linux 系统裁剪笔记 3
    Linux 系统裁剪笔记 软盘2
    Linux 系统裁剪笔记1
    如何获取Linux-gate.so.1动态库
    通过grub-install命令把grub安装到u盘
    爬虫之UserAgent用户代理
    爬虫之urllib包以及request模块和parse模块,爬虫之urllib.error模块
  • 原文地址:https://www.cnblogs.com/fifiyong/p/6010652.html
Copyright © 2020-2023  润新知