0

そのため、私が作成しているAndroidゲーム(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();

私が繰り返し発生するエラーはnullポインター例外であり、これがファイルが読み取られていないと私に信じさせた理由です。このメソッドをAndroidで使用する前にJavaでテストしたところ、機能しましたが、文字列を使用していました。上記のコードに何か問題がありますか?また、これらの大きなオブジェクトを保存するためのより良い方法はありますか?もう1つ気付いたのは、SDカードのファイルが約3KBでしたが、DDMSを使用することでTiledMapがより多くのスペースを占めるのを見たので、ファイルが完全に書き込まれていないということですか?

4

1 に答える 1

1

ya私はあなたがフルパスを与えていなかったと思います

FileInputStream in = new FileInputStream(root + "/test.tmx");

これがあなたの問題を解決することを願っています

于 2011-08-13T17:12:41.993 に答える