zoukankan      html  css  js  c++  java
  • Java自学笔记(20):【IO】对象流

    对象的序列化和反序列化

    把对象转换为字节序列的过程称为对象的序列化,Serialization           //保存对象状态并可再次读取

    把字节序列恢复为对象的过程称为对象的反序列化,Deserialization    

    应用:  把对象字节序列永久保存到硬盘上,在网络上传送对象的字节序列,通过序列化在进程中传递对象

    只有实现了Serializable和Externalizable接口的类的对象才能被序列化

    Serializable接口是一个标记接口                  Public interface Serializable{    }

    Externalizable接口继承自Serializable

    对象输出流

    ObjectOutputStream类用于对象的序列化,即将对象输出

    //Person.java
    package object;
    
    import java.io.Serializable;
    
    public class Person implements Serializable {  //序列化
        /**
         * 
         */
        private static final long serialVersionUID = 1L;  //序列化的ID标识
        public String name;
        public int age;
    }
    //ObjectOutputStreamDemo
    package object;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    
    public class ObjectOutputStreamDemo {
    
        public static void main(String[] args) {
            File file = new File("Person.txt");
            try {
                FileOutputStream fos = new FileOutputStream(file);
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                Person person = new Person();
                person.name= "tkj";
                person.age=17;
                oos.writeObject(person);
                oos.close();
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }    
             catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    对象输入流

    ObjectInputStream

    package object;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    
    public class ObjectOutputStreamDemo {
    
        public static void main(String[] args) {   //读取刚刚的Person
            File file = new File("Person.txt");
            try {
                FileOutputStream fos = new FileOutputStream(file);
                ObjectOutputStream oos = new ObjectOutputStream(fos);
                Person person = new Person();
                person.name= "tkj";
                person.age=17;
                oos.writeObject(person);
                oos.close();
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }    
             catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    transient关键字:用来表示一个域不是对象序列化的一部分,被修饰的变量不会被序列化,static也有这样的作用


    好难啊~~


  • 相关阅读:
    TypeError: can't compare offset-naive and offset-aware datetimes bugfix
    pg_restore数据库恢复指令
    第四十期百度技术沙龙笔记整理
    JS事件模型小结
    matlab Newton method
    Markdown 语法的简要规则
    iOS社交分享Twitter、Facebook、拷贝到剪切板、LINE、及邮件
    Linux系统调用过程分析
    iOS自己定义返回button(不影响返回手势)
    MAVEN项目模块化
  • 原文地址:https://www.cnblogs.com/tkj521Ya/p/11287848.html
Copyright © 2011-2022 走看看