关于反序列化时抛出java.io.EOFException异常

问题描述:在反序列化对象时,当对象出入流将文件的全部类反序列化之后,始终会抛出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

posted @ 2017-10-17 19:54  随花四散  阅读(16888)  评论(0编辑  收藏  举报