Java I/O系统之Object流

来源:互联网 发布:linux top c 命令详解 编辑:程序博客网 时间:2024/05/16 17:32

1. Object流介绍

    当我们要向程序写入一个对象或读取一个对象时,我们会用ObjectOutputStream和ObjectInputStream。可是,我们写入与写出的对象要求拥有持久性,也就是对象是序列化的。Java的对象序列化将那些实现Serializable接口的对象转换成一个字节序列,并能够一以后将这个字节序列完全恢复为原来的对象。如果你不希望对象的某个参数被序列化,那么就设置为transient。Serializable接口只是个标识,没有其它函数,所以如果你想控制序列过程,你可以用externalizable接口。

2. Object流例子 

package com.owen.io;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.Serializable;/** * 使用ObjectOutputStream和ObjectInputStream,将一个对象写入硬盘,然后再将对象读出 *  * @author OwenWilliam * */public class TestObjectIO{public static void main(String[] args) throws Exception{T t = new T();t.j = 45;try{FileOutputStream fos = new FileOutputStream("E:/test/testobject.dat");ObjectOutputStream oos = new ObjectOutputStream(fos);// 写入一个对象oos.writeObject(t);oos.flush();oos.close();FileInputStream fis = new FileInputStream("E:/test/testobject.dat");ObjectInputStream ois = new ObjectInputStream(fis);// 读出对象T tReaded = (T) ois.readObject();System.out.println(tReaded.i + " " + tReaded.j + " " + tReaded.d+ " " + tReaded.k);} catch (IOException e){e.printStackTrace();}}}/** * 创建类,这个类是序列化的,也就是这个对象可以按字节流写入硬盘或写到网络中 Serializable只是java的标记接口,没的其它方法 * 如果在序列化时,想要自己可以可以控制写入读出,那么就应该使用externalizable接口 *  * @author OwenWilliam * */class T implements Serializable{int i = 10;int j = 9;double d = 2.3;transient int k = 15; // 这个参数是不需要序列化的,也就是它的值不写入到计算机中,最后读取是零}


0 0