0

Android アプリケーションがあり、onPause()/onResume() メソッドで作成したデータ構造をメモリに保存/取得して、FileOutputStream/FileInputStream を介して実行間でデータが保持されるようにしたいと考えています。これは標準的な方法です。

では、後で取得できるように、データ構造をファイルに保存するにはどうすればよいでしょうか (文字列でそれを行う例を見てきましたが、他のオブジェクトではそうではありません)。バイト配列からそれらを作成するこれらすべてのオブジェクトのコンストラクターを作成することに加えて、データ構造とそれに含まれる後続のオブジェクトに対して getBytes() 関数を作成する必要がありますか?

編集:ああ、わかりました。したがって、これはシリアライゼーションと呼ばれます。以下は正しいですか?

書くには:

FileOutputStream fileOut = new FileOutputStream("filename");
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(e);
out.close();
fileOut.close();

読むには:

FileInputStream fileIn = new FileInputStream("filename");
ObjectInputStream in = new ObjectInputStream(fileIn);
e = (ObjectType) in.readObject();
in.close();
fileIn.close();

Edit2: また、データ構造と含まれるオブジェクト (およびサブオブジェクト) はすべて Serializable を実装する必要があります。たとえば、Dog の ArrayLists の BST がある場合、BST、ArrayList、および Dog クラスをすべて Serializable に実装してから、上記の関数を呼び出します。

これはすべて正しいですか?

4

2 に答える 2

1

ここでシリアライズ可能なライブラリを調べてください。これにより、人間が読めないファイルにクラスを直接書き込んで、同じ方法で読み戻すことができます。

于 2013-06-21T13:39:09.703 に答える
0

JSON または XML を使用してデータをシリアル化するのが一般的です。それ以外の場合は、Google プロトコル バッファを調べて、より高密度にパックされたデータ ファイルを探すことができます。

于 2013-06-21T13:40:30.483 に答える