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也有这样的作用


    好难啊~~


  • 相关阅读:
    java学习笔记—ServletConfig、ServletContext接口(13)
    php中的XML DOM(11)
    php中的XML DOM(10)
    java学习笔记—Servlet技术(11)
    MM-移动类型
    MM-委外业务
    English-商务英文邮件例句100句
    ABAP-表中数据的横向累加
    MM-实际应用中的难题
    ABAP-加密解密
  • 原文地址:https://www.cnblogs.com/tkj521Ya/p/11287848.html
Copyright © 2011-2022 走看看