所以在一个安卓游戏(使用andEngine)我正在制作,我正在尝试将TMXtiled地图保存为对象并稍后调用以节省加载时间。我已经设法获取SD卡上的文件,但我很难尝试从SD卡读取。这是我用来编写文件的代码:
File root = Environment.getExternalStorageDirectory();
FileOutputStream fos = new FileOutputStream(root + "/fileTest");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(tmxLoader.loadFromAsset(mContext, "tmx/test.tmx"));
oos.close();
然后我用它来读取SD卡中的文件:
FileInputStream in = new FileInputStream(root + "/fileTest");
ObjectInputStream os = new ObjectInputStream(in);
mTMXTiledMap = (TMXTiledMap) os.readObject();
os.close();
我一直得到的错误是空指针异常,这使我相信文件没有被读取。我在java中测试了这个方法,然后在android中使用它并且它可以工作,但我使用的是字符串。上面的代码有什么问题吗?还有一种更好的方法来存储这些大型物体吗?我注意到的另一件事是sd卡上的文件大约是3KB,但我看到TiledMap通过使用DDMS占用了更多的空间,那么这是否意味着文件没有完全写入?
答案 0 :(得分:1)
你认为你没有给出完整的路径,即扩展为
FileInputStream in = new FileInputStream(root + "/test.tmx");
希望这能解决您的问题