gpt4 book ai didi

java - Java 中的 EOFException

转载 作者:行者123 更新时间:2023-12-01 18:23:24 29 4
gpt4 key购买 nike

我目前正在JAVA中进行序列化,到目前为止我已经使序列化和反序列化工作正常。例如,如果我在程序中制作电影,关闭程序然后重新打开程序,电影仍然会在那里。我的问题是,即使所有代码都可以工作并且当我运行程序时序列化工作正常,我也会收到此错误,如下所示。

在这里您可以看到我的程序正在运行并显示异常

Exception error

这是异常指向的代码

public void readRecordsFromFile()
{
Video v = null;

try
{
FileInputStream fileIn = new FileInputStream("PrintOut.dat");
ObjectInputStream in = new ObjectInputStream(fileIn);

while((v = (Video)in.readObject()) != null)
{
videos.add(v);
}
//videos=(ArrayList<Video>)in.readObject();

fileIn.close();
in.close();

}

catch(IOException i)
{
System.out.println("IO Exception");
i.printStackTrace();
return;
}

catch(ClassNotFoundException m)
{
System.out.println("Class Not Found Exception");
m.printStackTrace();
return;
}
}

特别是它指向该行

while((v = (Video)in.readObject()) !=null)

有没有办法消除异常?事实上,即使有异常,我的程序也运行良好,这让我相信它可能并不那么重要,但我觉得删除异常是一个很好的做法。

任何帮助将不胜感激,如果需要任何其他代码,请告诉我,提前致谢,杰森

最佳答案

没有真正干净的方法来计算 ObjectInputStream 何时将到达缓冲区。

您最好的策略是首先在开头写入一个整数来表示您要写入多少个对象。然后,当您读回对象时,首先读取这个整数;然后你从流中读取了很多对象。

关于java - Java 中的 EOFException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27002608/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com