用ObjectInputStream类的readObject()方法时,怎么判断已经读完了,谢谢

jadic 2008-11-21 08:18:23
用writeObject(),写进去了几个序列化的对象后,我再读取,怎么判断读完了呢

还有就是我如果向同一个文件里写进了多个对象,然后再读取的时候是不是要按写的顺序挨个读取啊
谢谢
...全文
502 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
jadic 2008-11-27
  • 打赏
  • 举报
回复
现在是我写进去了,但是调用read()的时候直接就返回-1了
cwjieNo1 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jadic 的回复:]
FileInputStream fis = new FileInputStream("dat.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
int i = ois.read();
while(i != -1){
System.out.println((Person)ois.readObject());
i = ois.read();
}

你是指这样吗?

但这样,我试了下,并没有输出啊,
我跟了下,i一开始就直接是-1了
[/Quote]
应当是这样的:

int i = 0;
while((i = ois.read())!= -1){
System.out.println((Person)ois.readObject());
i = ois.read();
jadic 2008-11-22
  • 打赏
  • 举报
回复
就是说无法像read返回-1这样很直接的判断?
Looking_Glass 2008-11-21
  • 打赏
  • 举报
回复
个人认为把对象写入文件,不妨试下把对象先加到集合Set ,List,Map,再将集合写入文件。这样就比较好操作。如果你连续写入两个对象,可能读取时会出现流腐败现象。
「已注销」 2008-11-21
  • 打赏
  • 举报
回复
每个对象给个标志 然后自己设计怎么判断!
jadic 2008-11-21
  • 打赏
  • 举报
回复
FileInputStream fis = new FileInputStream("dat.txt");
ObjectInputStream ois = new ObjectInputStream(fis);
int i = ois.read();
while(i != -1){
System.out.println((Person)ois.readObject());
i = ois.read();
}

你是指这样吗?

但这样,我试了下,并没有输出啊,
我跟了下,i一开始就直接是-1了

jadic 2008-11-21
  • 打赏
  • 举报
回复
知道的,麻烦指教下,谢谢
chandlersong 2008-11-21
  • 打赏
  • 举报
回复
我记得不错的话,应该read返回值为-1时,表示读完。
还有几个对象写入一个文件,你会假如不是一个Stream写入的话,每个列前面都会有几个几个字节的标志符之类的东西。需要跳过的。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧