本帖最后由 浮出一个美 于 2014-1-6 11:57 编辑
如果文件里有多个对象,而我又要一个对象一个对象的去读取,如果对象被读完了,还要继续读的话就会报EOF异常。
readObject()没有像read()独到末尾返回-1,也没有像readline()独到末尾返回null。他就是返回对象,读完了就异常。
我看别人又两种解决办法:
1.写对象文件的时候把对象的个数存储起来,这样子读的时候就知道有多少个对象了。
可是这样,还要单独持久化一个存储对象个数的数据
2.while(true),一直读,知道抛出异常,然后继续执行后面的动作,像这样
- ObjectInputStream ois = null;
- List<Person> list = new ArrayList<Person>();
- try {
- ois = new ObjectInputStream(new FileInputStream("obj.object"));
- while(true){
- Person person = (Person) ois.readObject();
- list.add(person);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- for(Person p :list ){
- System.out.println(p.toString());
- }
复制代码
我感觉两种方法都不是很方便,请问大家还有什么更好的方法可以共享? |