首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在对保存的对象进行反序列化时会出现EOF异常

为什么在对保存的对象进行反序列化时会出现EOF异常
EN

Stack Overflow用户
提问于 2015-09-14 05:13:15
回答 1查看 1.5K关注 0票数 0

我正在尝试序列化然后反序列化多个对象。我可以毫无问题地写入文件,但在选择反序列化选项时,我会得到以下堆栈跟踪。以前,我可以成功地序列化和反序列化一个对象。

dos中的堆栈跟踪为:

代码语言:javascript
复制
java.io.EOFException
        at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Sourc
e)
        at java.io.ObjectInputStream.readObject0(Unknown Source)
        at java.io.ObjectInputStream.readObject(Unknown Source)
        at mainmenutest.DeserializeDemo.Deserialize(DeserializeDemo.java:23)
        at mainmenutest.MainmenuTest.getInput(MainmenuTest.java:64)
        at mainmenutest.MainmenuTest.main(MainmenuTest.java:26)

我的反序列化代码如下:

代码语言:javascript
复制
package mainmenutest;

/**
 *
 * @author Darren Estcourt
 */
import java.io.*;
public class DeserializeDemo
{
   public void Deserialize()
   {
      ClubInfo club = null;
      ClubInfo club2 = null;
      try
      {
         FileInputStream fileIn = new FileInputStream("C:/tmp/club.ser");
         ObjectInputStream in = new ObjectInputStream(fileIn);
         club = (ClubInfo) in.readObject();
         club2 = (ClubInfo) in.readObject();
         in.close();
         fileIn.close();
      }catch(IOException i)
      {
         i.printStackTrace();
         return;
      }catch(ClassNotFoundException c)
      {
         System.out.println("Club class not found");
         c.printStackTrace();
         return;
      }
      System.out.println("Saved game loaded...");
      System.out.println("Name: " + club.teamName);
      System.out.println("Stadium: " + club.stadium);
      System.out.println("Division: " + club.division);
     // System.out.println("SSN: " + club.SSN);
      System.out.println("Stadium Capacity: " + club.stadiumCapacity);
      System.out.println("Name : " + club2.teamName);

    }
}

我不想让别人帮我解决这个问题,只是给我一个正确方向的指针。我计划最终反序列化大约20个对象。

EN

回答 1

Stack Overflow用户

发布于 2015-09-14 06:49:02

当没有更多的对象可供读取时,或者流由于其他原因(长度为零,被截断,关闭时没有正确刷新)意外到达末尾时,会抛出EOFException

在本例中,异常是由readObject()抛出的,因此只有第一个异常适用。看起来您要么没有序列化对象并试图读取一个对象,要么序列化了一个对象并试图读取两个对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32554603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档