首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

流操作java.io.EOFException求解释,该如何解决

2012-03-26 
流操作java.io.EOFException求解释[b][/b]错误:Exception in thread main java.io.EOFExceptionat java.

流操作java.io.EOFException求解释
[b][/b]错误:
Exception in thread "main" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at Test.js(Test.java:37)
源程序:
public static Integer js() throws FileNotFoundException, IOException, ClassNotFoundException{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("num.txt"));
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("num.txt"));
Object o;
//oos.writeObject(new Integer(2));
Integer i = 0;
o = ois.readObject();
if(o instanceof Integer){
i = (Integer)o;
i++;
oos.writeObject(i);
}
return i;
}
加上红色的代码是可以,但注释掉后就抛出例外,在网上找了很多文章,可还是解释不通,求高手赤脚。。。。。。

[解决办法]
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("num.txt"));
不论之前num.txt中是否有内容,这行代码会把num.txt截短成4个字节,准备后续的写入。
此时,如果没有oos.writeObject()来先写入一个Object到文件中,ois.readObject()是读不到内容的,不但读不到,而且会抛出EOFException,因为一直读到文件尾部预想的内容也没出现。
而如果先执行了oos.writeObject(),则文件中已经有了内容,自然ois.readObject()就能顺利执行不报异常了。

热点排行
Bad Request.