欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

对象流

程序员文章站 2022-04-03 16:21:50
...

序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象–流数据(Objectoutputstream)

反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。流数据–对象(ObjectInputstream)

//对象流一定要实现这个接口
public class Car implements Serializable{
	private String band;
	private float topSpeed;
	public Car(String band, float topSpeed) {
		super();
		this.band = band;
		this.topSpeed = topSpeed;
	}
	public String getBand() {
		return band;
	}
	public void setBand(String band) {
		this.band = band;
	}
	public float getTopSpeed() {
		return topSpeed;
	}
	public void setTopSpeed(float topSpeed) {
		this.topSpeed = topSpeed;
	}
	@Override
	public String toString() {
		return "Car [band=" + band + ", topSpeed=" + topSpeed + "]";
	}
	
}

//对象流
public class ObjectOutputStreamDemo {
	static void write() throws IOException{
		FileOutputStream fos=new FileOutputStream("1.dat");
		ObjectOutputStream oos=new ObjectOutputStream(fos);
		//写入对象
		oos.writeObject(new Car("宝马",120));
		oos.writeObject(new Car("奔驰",200));
		oos.flush();
		oos.close();
	}
	
	static void read() throws IOException, ClassNotFoundException{
		FileInputStream fis=new FileInputStream("1.dat");
		ObjectInputStream ois=new ObjectInputStream(fis);
		//读对象
		Object obj;
		while(true){
			try {
				obj=ois.readObject();
				System.out.println(obj);
			} catch (EOFException e) {//读到末尾就抛出异常
				// TODO Auto-generated catch block
				System.out.println("读取完毕");
				break;
			}
		}
		
	}
	public static void main(String[] args) throws IOException, ClassNotFoundException {
		write();
		read();
	}
}

结果:

Car [band=宝马, topSpeed=120.0]
Car [band=奔驰, topSpeed=200.0]
读取完毕

我一个类中可能有很多的成员变量,有些我不想进行序列化。请问该怎么办呢?
使用transient关键字声明不需要序列化的成员变量

对象流