对象流
程序员文章站
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关键字声明不需要序列化的成员变量
上一篇: Java IO之字符流概述-2
下一篇: 多维数组的本质