保存的数据从手机中消失



我为Android制作了一个应用程序,可以保存双向飞碟射击的结果。在会话期间,用户按命中或未命中。会话结束后,用户按 save 并将新结果追加到 json 对象。之后,结果被附加,它被保存到手机中

    public static void saveData(Context context) {
    File path = context.getFilesDir();
    File file = new File(path, "jsonUsr.json");
    if (file.exists()) {
        try {
            FileOutputStream stream = new FileOutputStream(file);
            String objString = usrObject.toString();
            stream.write(objString.getBytes());
            stream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

现在,我的朋友在今天参加比赛时使用了我的应用程序。在我的应用程序正在运行并且他开始填写结果的会话期间,他会收到一条短信。他打开邮件并阅读。然后,他没有从当前正在运行的应用程序重新打开我的应用程序,而是转到 meny 并按下图标。突然,他发现所有的数据都不见了!不仅仅是本次会议,而是他输入的所有结果。我无法理解这一点,因为代码中甚至不存在删除保存的 json 字符串文件的调用。

我试图模仿他在手机上所做的事情,但它效果很好。他的手机内存有很多问题。几天前,它抱怨没有足够的内存进行升级,所以他把东西移到了SD卡上?是否有可能由于内存不足而删除数据或将其移动到SD卡?

与其说是

工作,不如说是我没有更多。由于我无法自己重新创建它,因此很难确切知道发生了什么。

最好始终写入同一目录中的新文件。如果写入成功,请通过更改新文件的名称将新文件移动到配置文件上。(此更改是原子的)

这样,您将始终得到一个有效的文件,即使由于某种原因(磁盘外,toString() 失败等)调用写入失败。

最新更新