我有一个游戏定期将游戏当前状态保存到文件中(通过将序列化对象写入文件)。用户可以稍后恢复游戏并读取该对象并从此构建游戏。为is.readObject生成异常。为什么?
这似乎是工作的罚款,但有时我得到这个例外
java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:98)
at java.io.ObjectInputStream.nextTC(ObjectInputStream.java:506)
at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:778)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:2003)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1960)
at com.myGame.GameState.loadFromFile
at com.myGame.GameState.loadGame
这里是loadFromFile代码
try {
FileInputStream fis = mActivity.openFileInput(fileName);
ObjectInputStream is = new ObjectInputStream(fis);
stateDetails = (StateDetails)is.readObject();//exception is generated here
is.close();
fis.close();
} catch (Exception e) {
MyApplication.SWERR(e);
}
我不明白为什么会出现这种情况。它的一次对象保存和阅读。没有涉及到达到文件结尾的循环。为什么会产生? 任何帮助表示赞赏........感谢
编辑:这是怎么了我的储蓄
FileOutputStream fos = mActivity.openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(stateDetails);
os.flush();
fos.flush();
os.close();
fos.close();
你有没有添加任何字段StateDetails或任何变量被读入? – ddmps 2013-04-21 14:18:18
你是什么意思添加任何字段? StatDetails是一个有15个成员变量(字段)的类 – Snake 2013-04-21 14:22:58
当你写入文件时,你是否总是关闭你的流?这可能是问题的根源。 – Keppil 2013-04-21 14:25:57