java 反序列化报错 提示:java.io.StreamCorruptedException 异常

publicvoidview(){//TODOAuto-generatedmethodstubSystem.out.println("请输入要操作的文件路径");Scan... public void view() {
// TODO Auto-generated method stub
System.out.println("请输入要操作的文件路径");
Scanner scan = new Scanner(System.in);
String fileUrl = scan.nextLine();
File file = new File(fileUrl);
impl emp = new impl();
if (file.exists()) {
System.out.println("该文件已经找到");
try {
FileInputStream fis = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(fis);
while (ois.readObject() != null) {
ArrayList<impl> arr = (ArrayList<impl>) ois.readObject();
for (int i = 0; i < arr.size(); i++) {
System.out.println(arr.get(i).getName());
System.out.println(arr.get(i).getBirthDate());
System.out.println(arr.get(i).getCreateDate());
}
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

控制台中:
java.io.StreamCorruptedException
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at neu.impl.view(impl.java:109)
at neu.test.main(test.java:28)
展开
 我来答
zuchunlei521
2012-07-20 · TA获得超过298个赞
知道小有建树答主
回答量:105
采纳率:100%
帮助的人:88万
展开全部
感觉是你while语句那块的问题,while(ois.readObject() != null)这条语句表明从对象流中读取一个对象,此时对象流已经从文件中读取了字节序列并且创建了一个对象的实例。而你又在while语句中再次调用ois.readObject(),对象流会再次读取文件中的字节序列去反序列化对象,如果文件已经到了EOF,就会出现问题。感觉ObjectInputStream还是别用在while循环中
wantairl
2012-07-20 · TA获得超过157个赞
知道答主
回答量:484
采纳率:100%
帮助的人:220万
展开全部
你确定你读的文件就是你序列化的文件?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-07-22
展开全部
把路径找对了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蕊诺辛
2012-07-20 · TA获得超过152个赞
知道小有建树答主
回答量:348
采纳率:100%
帮助的人:116万
展开全部
帮你顶下。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式