【问题标题】:FileInputStream / ObjectInputStream: StreamCorruptedException: Wrong format [closed]FileInputStream / ObjectInputStream:StreamCorruptedException:格式错误[关闭]
【发布时间】:2014-12-08 14:44:12
【问题描述】:

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

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

【问题讨论】:

    标签: java android serialization


    【解决方案1】:

    由于你没有贴出周围的代码,我不确定是不是这样,或者错误的来源。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        • 2010-09-14
        • 1970-01-01
        • 1970-01-01
        • 2012-12-12
        • 2011-07-02
        • 1970-01-01
        相关资源
        最近更新 更多