IO操作之ObjectInputStream与ObjectOutputStream

之前写过DataInputStream和DataOutputStream,使用这两个类可以对java基本数据类型进行序列化和反序列化。

本篇再来两个新东西:ObjectInputStream,ObjectOutputStream,这二位不但能对java基本数据类型进行操作,还可以直接干对象,使用起来也更方便。不过,值得注意的是,被干的对象需要实现Serializable接口。

请看下面两个示例

public class Student implements Serializable {
    private int id;
    private String name;
    private long age;
    private boolean gender;

    public Student(int id, String name, long age, boolean gender) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getAge() {
        return age;
    }

    public void setAge(long age) {
        this.age = age;
    }

    public boolean isGender() {
        return gender;
    }

    public void setGender(boolean gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name=‘" + name + ‘\‘‘ +
                ", age=" + age +
                ", gender=" + gender +
                ‘}‘;
    }
}

示例1:

 @Test
    public void testObjectStream() throws Exception {
        String fileName = "E:\\360downloads\\wpcache\\srvsetwp\\student2.txt";
        //对象输出流
        OutputStream outputStream = new FileOutputStream(fileName);
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        Student student = new Student(1, "李连杰", 12, true);
        objectOutputStream.writeObject(student);
        objectOutputStream.close();
        outputStream.close();

        //对象输入流
        FileInputStream fileInputStream = new FileInputStream(fileName);
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        Student o = (Student) objectInputStream.readObject();
        System.out.println(o);  //Student{id=1, name=‘李连杰‘, age=12, gender=true}
        objectInputStream.close();
        fileInputStream.close();
    }

示例2:

   @Test
    public void testObjectStreamPrimary() throws Exception {
        String fileName = "E:\\360downloads\\wpcache\\srvsetwp\\student2.txt";
        //对象输出流
        OutputStream outputStream = new FileOutputStream(fileName);
        ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
        Student student = new Student(1, "李连杰", 12, true);
        objectOutputStream.writeInt(student.getId());
        objectOutputStream.writeUTF(student.getName());
        objectOutputStream.writeLong(student.getAge());
        objectOutputStream.writeBoolean(student.isGender());
        objectOutputStream.close();
        outputStream.close();

        //对象输入流
        FileInputStream fileInputStream = new FileInputStream(fileName);
        ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
        int id = objectInputStream.readInt();
        String name = objectInputStream.readUTF();
        long age = objectInputStream.readLong();
        boolean gender = objectInputStream.readBoolean();
        student = new Student(id, name, age, gender);
        System.out.println(student);
        objectInputStream.close();
        fileInputStream.close();
    }

原文地址:https://www.cnblogs.com/z-qinfeng/p/11794557.html

时间: 2024-10-13 14:46:43

IO操作之ObjectInputStream与ObjectOutputStream的相关文章

Java IO: 序列化与ObjectInputStream、ObjectOutputStream

作者:Jakob Jenkov  译者: 李璟([email protected]) 本小节会简要概括Java IO中的序列化以及涉及到的流,主要包括ObjectInputStream和ObjectOutputStream. Serializable 原文链接 如果你希望类能够序列化和反序列化,必须实现Serializable接口,就像所展示的ObjectInputStream和ObjectOutputStream例子一样. 对象序列化本身就是一个主题.Java IO系列教程主要关注流.read

java io系列05之 ObjectInputStream 和 ObjectOutputStream

本章,我们学习ObjectInputStream 和 ObjectOutputStream ObjectInputStream 和 ObjectOutputStream 介绍 ObjectInputStream 和 ObjectOutputStream 的作用是,对基本数据和对象进行序列化操作支持.创 建“文件输出流”对应的ObjectOutputStream对象,该ObjectOutputStream对象能提供对“基本数据或对象”的持久存储: 当我们需要读取这些存储的“基本数据或对象”时,可以

Java之IO(七)ObjectInputStream和ObjectOutputStream

转载请注明源出处:http://www.cnblogs.com/lighten/p/7003536.html 1.前言 本章介绍Java字节流中重要的成员,对象流ObjectInputStream和ObjectOutputStream.之前的DataInputStream和DataOutputStream只是对一些基本数据类型进行了解析和储存,但是在Java中更常见的是一个对象实例,一个对象实例是十分复杂的,如何保存一个对象呢?这个就是对象流的作用了.对象流最终是要有归属地的,通常也就是文件流.

JAVASE02-Unit08: 文本数据IO操作 、 异常处理

Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; /** * java.io.Ob

javaIO中的对象流ObjectInputStream与ObjectOutputStream

ObjectInputStream与ObjectOutputStream可以将对象写在硬盘或者从硬盘中读取出来,当然也可以在网络中传输的时候.但是操作的对象必须实现序列化. 什么是对象的序列化?对象序列化的目标就是将对象保存在磁盘上,或者允许在网络中传输对象. api中描述如下 api中的描述如下 一个实现了序列化的对象 package cn.bean.demo.io.object; import java.io.Serializable; //如果这个对象拥有一个实例属性[并且这个实例的对象是

Java 基本IO操作

1.基本IO操作     有时候我们编写的程序除了自身会定义一些数据信息外,还需要引用外界的数据,或是将自身的数据发送到外界,这时我们需要使用输入与输出. 1)输入与输出       输入:是一个从外界进入到程序的方向,通常我们需要"读取"外界的数据时,使用输入.所以输入是用来读取数据的 输出:是一个从程序发送到外界的方向,通常我们需要"写出"数据到外界时,使用输出.所以输出是用来写出数据的 2)节点流与处理流 按照流是否直接与特定的地方(如磁盘.内存.设备等)相连

对象流: ObjectInputStream 和 ObjectOutputStream

/* * 1.对象流: ObjectInputStream 和 ObjectOutputStream 一对. * 1) ObjectInputStream 对象的字节输入流类, ObjectOutputStream对象的字节输出流类. * 2) 功能: 实现对象的输入/输出. (存储到文件中的是对象,从相应的文件中读取的还是对象) * 3) 注意: 对象流属于处理流,因此,使用时必须将它套接在节点流上. * * 4) 要实现对象的存盘和读取必须具备什么条件? * a) 对象对应的类必须实现一个接

serialVersionUID, ObjectInputStream与ObjectOutputStream类,Serializable接口,serialVersionUID的作用和用法

ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 Serializable其实是一个空接口 package java.io; public interface Serializable { } Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化. 什么情况下需要序列化 a)当你想把的内存中的对象写入到硬

ObjectInputStream与ObjectOutputStream类实现对象的存取

1. ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入 2. Serializable是个对象序列化接口,只有序列化才能实现对象存取 3. //定义学生类 package job; import java.io.Serializable;import java.util.Set; public class Student implements Seria