FileInputStream / ObjectInputStream:StreamCorruptedException:格式错误

时间:2014-12-08 14:44:12

标签: java android serialization

从文件中读取序列化对象时,我得到:

  

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();
        }

2 个答案:

答案 0 :(得分:1)

由于您尚未发布周围的代码,我不确定是否是这种情况,或者是错误的来源。

但是写完后你应该总是关闭你的溪流。

答案 1 :(得分:1)

确保游戏资产上的所有字段都是可序列化的。如果其中一个不是异常,则可以将其打印到您创建的文件中,这可能会导致读取该文件时出现异常。