码迷,mamicode.com
首页 > 其他好文 > 详细

对象流: ObjectInputStream 和 ObjectOutputStream

时间:2016-10-01 21:58:19      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:

/*
* 1、对象流: ObjectInputStream 和 ObjectOutputStream 一对。
* 1) ObjectInputStream 对象的字节输入流类, ObjectOutputStream对象的字节输出流类。
* 2) 功能: 实现对象的输入/输出。 (存储到文件中的是对象,从相应的文件中读取的还是对象)
* 3) 注意: 对象流属于处理流,因此,使用时必须将它套接在节点流上。
*
* 4) 要实现对象的存盘和读取必须具备什么条件?
* a) 对象对应的类必须实现一个接口: Serializable; 目的是实现对象的序列化(串行化)。
*
* b) 构建 ObjectOutputStream 和 ObjectInputStream类的对象。
*
* c) 通过对象流的方法实现对象的存储和读取。
* writeObject();
* readObject();
*
*/

技术分享
public static void main(String[] args) {
        //1 准备
        Person p1 = new Person("张三", true, 21 );
        Person p2 = new Person("李四", false, 20 );
        Person p3 = new Person("王二", false, 19 );
        
        String path = "d:/objects.dat";
        
        //2 声明 
        ObjectOutputStream  oos = null;
        ObjectInputStream  ois = null;
        
        //3 创建
        try {
            oos = new ObjectOutputStream( new FileOutputStream( path) );
            ois = new ObjectInputStream( new FileInputStream( path) );
            
            //4 存盘
            oos.writeObject( p1 );
            oos.writeObject( p2 );
            oos.writeObject( p3 );
            
            //5 确保存盘成功
            oos.flush();
            System.out.println("\n已将对象存盘到 " + path + " 文件中了。");
            
            //6 读取对象
            Object obj = ois.readObject();
            p1 = (Person) obj;
            System.out.println( "p1>>> " + p1 );
            System.out.println("p1,你帮我做一道算术题,行吗?");
            System.out.println("没有问题,把数据给我就行了。");
            System.out.println("算术题完成如下:");
            int a = (int)(2331 * Math.random());
            int b = (int)(989 * Math.random());
            int re = p1.add(a, b);
            System.out.println( re );
            
            obj = ois.readObject();
            p1 = (Person) obj;
            System.out.println( ">>> " + p1 );
            
            obj = ois.readObject();
            p1 = (Person) obj;
            System.out.println( ">>>"  + p1 );
            
        } catch (FileNotFoundException e) {
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
         
        } finally {
            try {
                oos.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
View Code

 

技术分享
package com.bjsxt.d821;

import java.io.Serializable;

public class Person  implements  Serializable { //实现该接口,从而让它的对象完成序列化(串行化)。
    
    private String name;
    private boolean sex;
    private int age;
    
    public Person() {

    }

    public Person(String name, boolean sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    
    //
    //
    
    @Override
    public String toString() {
        return "姓名: " + name + "  性别: " + (sex ? "男":"女") + "  年龄: " + age;
    }
    
    public int add( int x, int y ){
        System.out.printf("%d + %d = " , x , y );
        return x + y;
    }
}
View Code

 

对象流: ObjectInputStream 和 ObjectOutputStream

标签:

原文地址:http://www.cnblogs.com/zhaoqingwin/p/5926300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!