ものによってはデータベースを使う方がいい場合もありますが、単体で出力したい場合に便利なのがシリアライズ。 データを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 件のコメント:
コメントを投稿