ゲームの現在のステータスを定期的にファイルに保存するゲームがあります (シリアル化されたオブジェクトをファイルに書き込むことにより)。ユーザーは後でゲームを再開でき、そのオブジェクトを読み取ってそこからゲームをビルドします。
これは正常に動作しているようですが、時々この例外が発生します
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);
}
なぜこれが起こるのかわかりません。その 1 回限りのオブジェクトの保存と読み取り。ファイルの終わりに到達するためのループはありません。なぜ生成されるのでしょうか?どんな助けでも大歓迎です.......ありがとう
編集:これが私が保存する方法です
FileOutputStream fos = mActivity.openFileOutput(fileName, Context.MODE_PRIVATE);
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(stateDetails);
os.flush();
fos.flush();
os.close();
fos.close();