请教一个java.io.EOFException异常的解决

fqswain 2006-08-14 08:37:06
下面的代码,没有文件user.ini运行时正常,有的时候会出现Reading Error123:java.io.EOFException,此时的
allconfigfile及currentfile也尚未赋值,但感觉跟这个没关系,请大家指点下新手
=========================
class Usersetup implements Serializable {
private Vector allconfigfile = new Vector();

private String currentfile;

public Usersetup() {

}

public void init() {
File configfile = new File("Data\\user.ini");
if (configfile.exists()) {
try {
FileInputStream fi = new FileInputStream(configfile);
ObjectInputStream si = new ObjectInputStream(fi);
this.currentfile = ((Usersetup) si.readObject()).currentfile;
this.allconfigfile = ((Usersetup) si.readObject()).allconfigfile;
si.close();
} catch (Exception e) {
System.out.print("Reading Error123:" + e);
System.exit(1);
}
} else {
try {
FileOutputStream fo = new FileOutputStream(configfile);
ObjectOutputStream so = new ObjectOutputStream(fo);
so.writeObject(this);
so.close();
} catch (Exception e) {
System.out.println("Saving Error:" + e);
System.exit(1);
}
}
}

public int getFileNumber() {
return (allconfigfile.size());
}

public void print() {
int i;
for (i = 1; i < 10; i++) {
System.out.print("[" + i + "]");
if (i <= allconfigfile.size()) {
System.out.print(allconfigfile.elementAt(i));
}
System.out.println();
}
System.out.println("[0]返回");
}
}
...全文
1962 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Areslp 2006-08-15
  • 打赏
  • 举报
回复
package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.Vector;

public class Test1 implements Serializable {

private Vector allconfigfile = new Vector();

private String currentfile;

public Test1() {

}

public void init() {
File configfile = new File("d:\\1.txt");
if (configfile.exists()) {
try {
FileInputStream fi = new FileInputStream(configfile);
ObjectInputStream si = new ObjectInputStream(fi);
Test1 temp=(Test1) si.readObject();
this.currentfile = temp.currentfile;
this.allconfigfile = temp.allconfigfile;
si.close();
} catch (Exception e) {
System.out.print("Reading Error123:" + e);
System.exit(1);
}
} else {
try {
FileOutputStream fo = new FileOutputStream(configfile);
ObjectOutputStream so = new ObjectOutputStream(fo);
so.writeObject(this);
so.close();
} catch (Exception e) {
System.out.println("Saving Error:" + e);
System.exit(1);
}
}
}

public int getFileNumber() {
return (allconfigfile.size());
}

public void print() {
int i;
for (i = 1; i < 10; i++) {
System.out.print("[" + i + "]");
if (i <= allconfigfile.size()) {
System.out.print(allconfigfile.elementAt(i));
}
System.out.println();
}
System.out.println("[0]返回");
}

public static void main(String[] args){
Test1 t1=new Test1();
t1.init();
}
}
这样行了,楼上说的对,读对象的时候多读了一次
hbwhwang 2006-08-15
  • 打赏
  • 举报
回复
代码的动作如下:
在没有这个文件,创建这个文件,并写一个对象(自己)到这个文件中。
在有这个文件的时候,从文件读2个对象。
=========
你应该看出写入和读出不匹配(1!=2)
你可以对加一个so.writeObject(this);或者少写一个readObject
Areslp 2006-08-15
  • 打赏
  • 举报
回复
当输入过程中意外到达文件或流的末尾时,抛出java.io.EOFException异常
fqswain 2006-08-15
  • 打赏
  • 举报
回复
已解决,谢谢,我本来跟Areslp写的是一样的,后来出现一个local stream的错误,就把Test1 temp=(Test1) si.readObject();给去掉了,以为是这个引起的。多谢各位
zhmt 2006-08-15
  • 打赏
  • 举报
回复
mark!

---------------------
代表城管来接分。
不给就抢,一天一次...

62,635

社区成员

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

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