问题描述:在反序列化对象时,当对象出入流将文件的全部类反序列化之后,始终会抛出java.io.EOFException.
原因:java API文档中对于反序列化对象时使用的java.io.ObjectInputStream类的readObject()方法的描述有一句话是"该方法始终会抛出异常",也就是说该异常无法避免的.
解决方法:
该异常是输入流已经到结尾了的标志,我们可以将其捕获,然后不做任何操作,即结束了该次反序列化操作,代码如下:
1 ObjectInputStream ois = null; 2 FileInputStream fis=new FileInputStream(filePath); 3 //当文件中的有内容时 4 if(fis.available()!=0) 5 ois = new ObjectInputStream(fis); 6 else{ 7 System.out.println("文件为空!"); 8 return ; 9 } 10 try{ 11 while(true) 12 System.out.println((Student)ois.readObject()); 13 }catch(EOFException e){ 14 }
ps:在创建ObjectInputStream对象时,如果文件中没有内容,同样也会抛出java.io.EOFException