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


    好难啊~~


  • 相关阅读:
    css实现梯形
    CSS3自定义滚动条样式 -webkit-scrollbar
    MySQL-5.6.13免安装版配置方法
    CSS边框长度控制
    The Shapes of CSS(css的形状)
    CSS制作图形速查表
    使用onclick跳转到其他页面/跳转到指定url
    TCP/IP协议
    jQuery实现全选、反选和不选功能
    checkbox在vue中的用法小结
  • 原文地址:https://www.cnblogs.com/tkj521Ya/p/11287848.html
Copyright © 2011-2022 走看看