我为我糟糕的英语感到抱歉。我正在使用libgdx为android开发一个java应用程序。我想写一个文件来保存一些应用程序对象,我正在使用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文件夹中,但我在手机中查找了相应的文件夹,但找不到。我在内部和外部存储器中搜索了data/name_of_my_project,但都找不到。和之前一样,我遇到了一个类似的错误,当我无法在android版本中加载皮肤(说皮肤不存在),而我可以在桌面版本中加载皮肤时,我认为我的问题可能与android版本中文件存储的位置有关。有人能给我点建议吗?
谢谢!
发布于 2016-05-16 06:47:45
我建议您阅读官方文档:https://github.com/libgdx/libgdx/wiki/File-handling
内部文件相对于桌面上的应用程序根目录或工作目录,相对于Android上的资产目录,以及相对于您的GWT项目的核心/ assets /目录。这些文件是只读的。
它提到存储在assets文件夹中的文件是只读的。为了保存您的游戏状态,我建议您使用Preferences API,它允许您存储键值对并轻松检索它们。更多信息请点击这里:https://github.com/libgdx/libgdx/wiki/Preferences。
对于将对象转换为字符串,这里有另一个答案:How to serialize an object into a string
如果你仍然想写一个文件,你将不得不使用本地存储,这在wiki中有进一步的解释(见最上面的链接)。
https://stackoverflow.com/questions/37242121
复制相似问题