問題描述:在反序列化對象時,當對象出入流將文件的全部類反序列化之后,始終會拋出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
