因此,在我正在制作的安卓游戏(使用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 占用了更多空间,这是否意味着文件没有被完全写入?