对象操作流

2018-12-27  本文已影响0人  啦啦啦_9a5f

对象操作流:可以用于读写任意类型的对象

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时,读写不会发生异常

上一篇 下一篇

猜你喜欢

热点阅读