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版本中。有人可以给我一个提示吗?
谢谢!
答案 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中进一步解释(参见最顶层的链接)。