IO之Objcet流

 

好吧,这个流也很有意思。。。

提一下不常用的一个接口,Externalizable,它有两个方法readExternal。。writeExternal。。是实现可控制的序列化,当然Serializable(不含方法,故不用重写,so只是一个标记性的接口,由编译器来识别)不可控的,是由系统控制的,不过最好还是由系统控制的比较好,理由吧。。。说不清,有点深

 

 

package heng.java.IO5;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
 * 当对象被序列化后写入硬盘,那么这个对象里的变量在硬盘上将不能被手动的改变
 * @author haley
 *
 */
public class TestObjectIO {

	public static void main(String[] args) {
		T t = new T();
		t.k = 8;
		try {
			FileOutputStream fos = new FileOutputStream("e:\\Order\\TCPTwoTalkClient.java");
			ObjectOutputStream oos = new ObjectOutputStream(fos);
			oos.writeObject(t);
			oos.flush();
			oos.close();
			
			FileInputStream fis = new FileInputStream("e:\\Order\\TCPTwoTalkClient.java");
			ObjectInputStream ois = new ObjectInputStream(fis);
			T tReaded = (T)ois.readObject();
			System.out.println(tReaded.i + " "+tReaded.j + " " +tReaded.d + " "+tReaded.k);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}
class T implements Serializable {//属于标记性的接口,不存在方法,故不用重写
	int i = 10;
	int j = 9;
	double d = 2.3;
	transient int  k = 15;//可忽略序列化,就是不会将k写入硬盘
}

你可能感兴趣的:(IO之Objcet流)