对象操作流:可以用于读写任意类型的对象
ObjectOutputStream
writerObject
ObjectOutputStream(OutputStream out)
ObjectInputStream
readObject
ObjectInputStream(InputStream in)
注意:使用对象输出流写对象,只能使用对象输入流来读取对象
只能支持java.io.Serializable接口的对象写入流中
java.io.Serializable:序列号,是一个标识接口,只起标识只用,没有方法
当一个类的对象需要IO流进行度读写的时候,这个类必须要实现该接口
try{
while(true){
Object obj = ois.readObject();
System.out.println(obj);
}
}catch(EOFException e){
System.out.println("读到文件末尾");
}
ObjectOutputStream oos =new ObjectOutputStream(new FileOutput("b.txt"));
ArrayList<student> list = new ArrayList<stuednt>();
list.add(new student("wangwu",30));
list.add(new student("zhangsna",28));
oos.writerObject(list);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));
Object obj = ois.readObject();
ArrayList<Student> list = (ArrayList<Student>) obj;
for(Student student:list){
System.out.println(student)
}
解决对象序列化接口出现的黄色警告问题
Exception in thread "mian" java.io.InvalidClassExceptio
当Serialization 运行时检测到某个局域一下问题之一时,抛出异常
该类的序列版本号与从流中读取的类的描述不匹配
该类包含未知数据类型
该类没有可访问的无参数构造方法
解决方法:固定使用同一个serialVersionID
private static final serialVersionID = XXXXL
使用同一个ID时,读写不会发生异常