zoukankan      html  css  js  c++  java
  • 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();
            
            
            
        }
    
    }
  • 相关阅读:
    2-4 Vue中的属性绑定和双向数据绑定
    MySQL索引失效的几种情况
    MySQL索引失效的几种情况
    Linux实现MYSQl数据库的定时备份
    Linux实现MYSQl数据库的定时备份
    你还在 Select * 吗?
    你还在 Select * 吗?
    世界顶级的程序员们告诉你:这些书都是你应该读的
    世界顶级的程序员们告诉你:这些书都是你应该读的
    真正努力和不努力的程序员,发朋友圈究竟有什么不一样?
  • 原文地址:https://www.cnblogs.com/fifiyong/p/6010652.html
Copyright © 2011-2022 走看看