从文件中读取序列化对象时,我得到:
java.io.StreamCorruptedException:格式错误:0
实现Serializable的对象保存并恢复原样:
保存:
try {
FileOutputStream fileOutputStream = getContext().openFileOutput("gameState.ser", Context.MODE_PRIVATE);
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(gameAssets);
} catch (Exception e) {
e.printStackTrace();
}
还原:
try {
FileInputStream fileInputStream = getContext().openFileInput("gameState.ser");
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
gameAssets = (GameAssets) objectInputStream.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
答案 0 :(得分:1)
由于您尚未发布周围的代码,我不确定是否是这种情况,或者是错误的来源。
但是写完后你应该总是关闭你的溪流。
答案 1 :(得分:1)
确保游戏资产上的所有字段都是可序列化的。如果其中一个不是异常,则可以将其打印到您创建的文件中,这可能会导致读取该文件时出现异常。