栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

对象流ObjectInputStream和 ObjectOutputStream

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

对象流ObjectInputStream和 ObjectOutputStream

对象流是一对高级流,在流链接中的作用是完成对象的序列化与反序列化

序列化:是对象输出流的工作,将对象按照其结构转化为一组字节的过程

反序列化:是对象输入流的工作,将一组字节还原为对象的过程

java.io.ObjectInputStream

常用构造器

ObjectInputStream(InputStream in):创建一个对象输入流并连接到参数in这个输入流上

常用方法

Object readObject():进行对象反序列化,将读取的字节转化为一个对象并以Object形式返回(多态),如果读取的字节表示的不是一个java对象,会抛出java.io.ClassNotFoundException

public class OISDemo {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        FileInputStream fis = new FileInputStream("person.obj");
        ObjectInputStream ois = new ObjectInputStream(fis);

        Person person = (Person)ois.readObject();
        System.out.println(person);

        ois.close();
    }
}
java.io.ObjectOutputStream

常用构造器

ObjectOutputStream(OutputStream out):创建一个对象输出流并连接到参数out这个输入流上

常用方法

void writeObjecat(Object obj):进行对象序列化

public class OOSDemo {
    public static void main(String[] args) throws IOException {
        String name = "xxx";
        int age = 18;
        String gender = "女";
        String[] otherInfo = {"身高168", "演员"};
        Person p = new Person(name, age, gender, otherInfo);
        FileOutputStream fos = new FileOutputStream("person.obj");
        ObjectOutputStream oos = new ObjectOutputStream(fos);

        oos.writeObject(p);
        System.out.println("写出完毕");
        oos.close();
    }
}

注意:序列化的对象必须是实现可序列化接口:java.io.Serializable;如果没有实现,就会抛出异常:java.io.NotSerializableException

java.io.Serializable可序列化窗口没有任何抽象方法

该类中所有的引用类型属性也需要是实现该接口,但是String,包装类,数组都已经实现可序列化接口

实现序列化接口的类中建议显示定义常量:static final long serialVersionUID = 1L;

原因:如果先进行对象的序列化,再对对象的类进行修改,则原本类中默认的serialVersionUID发生了变化,即读取到的对象的序列化版本号与当前类的序列化版本号不一致,再对对象进行反序列化时,会抛出异常:java.io.InvalidClassException

对类中的属性添加关键字transient,被修饰的属性在序列化时,会被忽略,即输出内容为null,0,等系统默认值,从而对象序列化达到瘦身的目的

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/852116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号