当使用文件缓冲流的时候有的时候会遇到EOFException异常情况例如:
public void readListFromFile() {
try {
FileInputStream fis=new FileInputStream(userFile);
ObjectInputStream ois=new ObjectInputStream(fis);
Object object=ois.readObject();
userList=(List<User>)object;
ois.close();
fis.close();
} 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并没有提示 EOFException异常,但是在控制台运行的时候确实出现了EOFException异常!
解决方法:
方法一:不要让要读入的文本为空!至少保留写入信息之后的一条信息!
但是对于用户储存上显然这条是行不通的,因为空文本的情况是肯定的!
方法二:捕获该异常信息,只捕获,不作处理!
try {
FileInputStream fis=new FileInputStream(userFile);
ObjectInputStream ois=new ObjectInputStream(fis);
Object object=ois.readObject();
userList=(List<User>)object;
ois.close();
fis.close();
} catch (EOFException e) {
} 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();
}
例如上述:但是奇怪的是我发现有时候你把他作为最后一个catch他竟然会报错,尝试之后发现放在第一个不会出现错误,问题得到解决!