import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/*
* 对象流
* ObjectInputStream
* ObjectOutputStream
* 1 先写入后读取
* 2 读取和写入顺序一致
* 3 不是所有的对象都可以序列化 要支持Serializable
*
*
*/
public class TestIo14 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//写入
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(baos));
oos.writeInt(1);
oos.writeBoolean(false);
oos.writeObject(new People(11,"dan"));//序列化对象
oos.flush();
byte[] datas = baos.toByteArray();
//读取
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new ByteArrayInputStream(datas)));
int num = ois.readInt();
boolean chocie = ois.readBoolean();
Object p = ois.readObject();//反序列化对象
System.out.println(num);
System.out.println(chocie);
if (p instanceof People) {//手动类型强转,
People people = (People) p;
System.out.println(people.getName() + "\t" + people.getAge());
}
}
}
class People implements java.io.Serializable{//继承Serializable 不继承会出现异常
private transient int age;//transient的意思透明,加上后不会显示响应的属性
private String name;
public People() {
// TODO Auto-generated constructor stub
}
public People(int age, String name) {
super();
this.age = age;
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}