很简单的序列化程序,抛出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