Android Libgdx - 无法保存在文件中

时间:2016-05-15 18:29:17

标签: java android libgdx

Firstable我很抱歉我的英语很差。 我正在使用libgdx在java中为android开发一个应用程序。 我想写一个文件来保存一些应用程序对象,我正在使用ObjectOutputStream来做到这一点。以下是代码的摘录:

            try {
                os_savedGame = new ObjectOutputStream(new FileOutputStream("savedGame.txt"));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                os_savedGame.writeObject(obj1);
                os_savedGame.writeObject(obj2);
            } catch (IOException e) {
                 e.printStackTrace();
            }

我将它作为桌面应用程序运行,到目前为止一直很好,但是当我尝试作为Android应用程序运行时,我收到以下错误: 尝试在空对象引用上调用虚方法'void java.io.ObjectOutputStream.writeObject(java.lang.Object)'

我知道在桌面版上,该文件存储在android \ assets文件夹中,但是我在手机中查找了相应的文件夹而我找不到它。我在内部和外部内存中搜索数据/ name_of_my_project,但我无法找到它。以前我有一个类似的错误,当我无法加载Android版本的皮肤(说皮肤不存在),而我可以在桌面版本,我认为我的问题可能是相关的地方文件存储在Android版本中。有人可以给我一个提示吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

我建议您阅读官方文档: https://github.com/libgdx/libgdx/wiki/File-handling

  

内部文件与应用程序的root或工作相关   桌面上的目录,相对于Android上的资产目录,   并且相对于GWT项目的core / assets /目录。这些   文件是只读的。

它提到存储在assets文件夹中的文件是只读的。为了保存游戏状态,我建议使用Preferences API,它允许您存储键值对并轻松检索它们。更多信息请点击此处:https://github.com/libgdx/libgdx/wiki/Preferences

将对象转换为字符串是另一回答: How to serialize an object into a string

如果你仍想写一个文件,你将不得不使用本地存储,这将在wiki中进一步解释(参见最顶层的链接)。