• Java基础ObjectOutputStream、ObjectInputStream


    package com.hspedu.io_;

    import org.junit.Test;

    import java.io.*;

    public class TestSaveObjectFile {
    // ObjectOutputStream保存对象、ObjectInputStream读取对象
    @Test
    public void saveObjByObjectOutputStream() throws IOException {
    String savePath = "e:\\JavaIO\\ObjectOutputStream\\data.dat";
    ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(savePath));

    objectOutputStream.writeInt(10);

    objectOutputStream.writeUTF("hello, world!");

    objectOutputStream.writeDouble(20.5);

    objectOutputStream.writeBoolean(true);

    Cat cat = new Cat("小白", 3);
    objectOutputStream.writeObject(cat);

    objectOutputStream.close();
    System.out.println("保存完毕");
    }

    @Test
    public void readObjByObjectInputStream() throws IOException, ClassNotFoundException {
    String readPath = "e:\\JavaIO\\ObjectOutputStream\\data.dat";
    ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(readPath));

    int i = objectInputStream.readInt();
    System.out.println("i = " + i);

    String s = objectInputStream.readUTF();
    System.out.println("s = " + s);

    double d = objectInputStream.readDouble();
    System.out.println("d = " + d);

    boolean b = objectInputStream.readBoolean();
    System.out.println("b = " + b);

    Object object = objectInputStream.readObject();
    System.out.println(object + "的运行类型是:" + object.getClass());
    Cat cat = (Cat) object; // 转换编译类型为Cat,调用eatFish方法
    cat.eatFish();

    objectInputStream.close();
    }
    }

    class Cat implements Serializable {
    private String name;
    private int age;

    public Cat(String name, int age) {
    this.name = name;
    this.age = age;
    }

    @Override
    public String toString() {
    return "Cat{" +
    "name='" + name + '\'' +
    ", age=" + age +
    '}';
    }

    public void eatFish() {
    System.out.println("猫吃鱼..");
    }
    }

    注意:1、ObjectOutputStream保存的对象,其类必须实现(implements) Serializable接口;2、ObjectInputStream读取对象信息的顺序必须要保存对象的顺序一致

  • 相关阅读:
    [考试]20151017数据结构
    [考试]20151016动态规划
    [考试]20151015分治
    [BZOJ1501/NOI2005]智慧珠游戏
    [BZOJ3139/HNOI2013]比赛
    [考试]20151013搜索
    BZOJ3082: Graph2
    BZOJ4690: Never Wait for Weights
    BZOJ4668: 冷战
    BZOJ3262: 陌上花开
  • 原文地址:https://www.cnblogs.com/kenantongxue/p/16170090.html
Copyright © 2020-2023  润新知