当前位置: 代码迷 >> J2SE >> 很简单的序列化程序,抛出io.EOFException 错误
  详细解决方案

很简单的序列化程序,抛出io.EOFException 错误

热度:1543   发布时间:2013-02-25 00:00:00.0
很简单的序列化程序,抛出io.EOFException 异常
大家好,我写了一个很简单的序列化程序,该程序把一个整数写入文件,再从该文件读出这个整数,可却跑出了OFException异常:
Java code
import java.io.*;public class Test{    public static void main(String[] args)        throws Exception    {        ObjectOutputStream oos = new ObjectOutputStream(                                new FileOutputStream("test.dat"));        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.dat"));        oos.writeInt(250); //向文件写入一个整数        System.out.println(""+ois.readInt()); 从文件读出    }}


抛出了如下异常:
---------- java ----------
Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readInt(DataInputStream.java:392)
at java.io.ObjectInputStream$BlockDataInputStream.readInt(ObjectInputStream.java:2793)
at java.io.ObjectInputStream.readInt(ObjectInputStream.java:968)
at Test.main(Test.java:11)

查找文档,获知造成错误的原因,可能是在ois.readInt()操作之前文件指针就已经到达了尾部(事实上我在该操作之前使用ois.available() 检查过,确实是返回 0 )
很疑惑,为什么才刚开始读取,就已经到达了尾部呢?该怎么修改才能正常读取?
万分感激!

------解决方案--------------------------------------------------------
读和写 如果是同一个文件的话,不要同时打开。

写好了,oos.close了。 再new ObjectInputStream
  相关解决方案