我有一個遊戲定期將遊戲當前狀態保存到文件中(通過將序列化對象寫入文件)。用戶可以稍後恢復遊戲並讀取該對象並從此構建遊戲。爲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