gpt4 book ai didi

java - 使用 EOFException 结束循环

转载 作者:行者123 更新时间:2023-11-30 03:32:07 25 4
gpt4 key购买 nike

我将类(class)学生的对象保存在名为 file.txt 的文件中我不知道文件中有多少学生对象。我如何使用 EOFException 来结束循环。我无法纠正该异常,有什么帮助

students class
class students implements java.io.Serializable {
String Frist;
String Second;
String Phone;
String CityAddress;
String CityStreet;
students(){}
students(String s1,String s2,String s3,String s4,String s5){
Frist=s1;
Second=s2;
Phone=s3;
CityAddress=s4;
CityStreet=s5;

}

}
this i try in main but give exception
public static void main(String[] args) throws Exception {
// TODO code application logic here

students s;
ObjectInputStream input =new ObjectInputStream(new FileInputStream("file.txt"));
while(true)
{
try
{
s=(students)(input.readObject());
System.out.print(s.Frist +" ");
System.out.print(s.Second+" ");
System.out.print(s.Phone+" ");
System.out.print(s.CityAddress+" ");
System.out.println(s.CityStreet);
}catch(EOFException ex)
{
break;
}

}

input.close();


}

这是异常堆栈跟踪:

Exception in thread "main" java.io.InvalidClassException: sheet2_7.students; local class incompatible: 
stream classdesc serialVersionUID = -4264328281487890061,
local class serialVersionUID = 397805898333518525
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:621)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1623)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1518)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1774)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at sheet2_7.Sheet2_7.main(Sheet2_7.java:81)

最佳答案

how can i Use EOFException to end the loop to.

你所写的应该有效。 catch block 中的 break 应终止循环。

或者,将循环移至 try block 内。当抛出异常时,您将在执行 catch block 之前终止循环。

this i try in main but give exception

and i cant correct that exception

您是说您在 EOFException 上遇到编译错误吗?如果是这样,请检查您是否已导入它。

否则,您将需要向我们展示异常的完整堆栈跟踪...包括异常名称和消息。

更新

异常堆栈跟踪告诉我串行对象的序列化签名与代码中类的签名不匹配。这很可能意味着自创建序列化对象以来您已更改该类。

这是在数据持久化方案中使用 Java 序列化的问题之一。 (参见What is a serialVersionUID and why should I use it?)

如果不知道您是如何陷入这种状态的,则无法建议解决方案是什么。

关于java - 使用 EOFException 结束循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28789677/

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