ものによってはデータベースを使う方がいい場合もありますが、単体で出力したい場合に便利なのがシリアライズ。 データを1つのSerializableなクラスインスタンスにまとめておけばObjectOutputStream.writeObjectで簡単にファイルにすることが出来ます。
シリアライズのすごいところはそのクラスのフィールドがSerializableなクラスで構成されている場合には、出力コードを何にも書かなくていいんです。
たとえSerializableではないクラスがあったとしても、そこだけ自分で出力するかSerializableクラスに置き換えるだけでいいんです。
//データクラス
class S implements Serializable {
private static final long serialVersionUID = 1L;
public int id;
public String name;
public boolean visible;
public S(int id) {
this.id = id;
}
}
//出力
S data = new S(1);
FileOutputStream fos = context.openFileOutput(filepath, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(data);
oos.close();
//読込
FileInputStream fis = new FileInputStream(filepath);
ObjectInputStream ois = new ObjectInputStream(fis);
S data = (S)ois.readObject();
ois.close();
ファイルを読み込むときもObjectInputStream.readObjectで開いてキャストするだけで復元できます。
ただし、シリアライズではこんな落とし穴やこんな注意点もありますので、お気をつけて…
0 件のコメント:
コメントを投稿