大家好,我写了一个很简单的序列化程序,该程序把一个整数写入文件,再从该文件读出这个整数,可却跑出了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