2011-08-13 14 views
0

アンドロイドゲーム(andEngineを使用)では、TMXtiledマップをオブジェクトとして保存しようとしていて、読み込み時間を節約するために後で呼び出します。私はsdカード上のファイルを取得することができましたが、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ポインタ例外でありますファイルが読み込まれていないと私に信じさせたのは何ですか。私はアンドロイドでそれを使用する前に、このメソッドをjavaでテストし、それは動作しますが、私は文字列を使用していました。上記のコードに何か問題がありますか?また、これらの大きなオブジェクトを格納するためのより良い方法がありますか?私が気づいたもう一つのことは、SDカードのファイルが約3KBであったことです。しかし、TiledMapがDDMSを使ってもっと多くのスペースを取るのを見ました。それはファイルが完全に書き込まれていないことを意味しますか?

答えて

2

屋私はあなたがこれはあなたの問題を解決します

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

希望通りの拡張子を持つ、すなわち、完全なパスを指定したhadntだと思う

+0

私は両方のTMXとしてテストを使用するので、上記のコードは少しビット混乱して名前とsdカード上のファイルの名前。 sdカードにはファイルの拡張子はありません。私はそれをより明白にするために上記のコードを編集します。 – rioneye

+0

書き込みと読み込みの両方で拡張子を与える必要があります –

+0

あなたは普通のファイルとして残すことはできません。私はあなたがシリアル化可能なクラスを実装しているオブジェクトを作成した場合、ファイル名は重要ではないと思った? – rioneye

関連する問題