はじめに
Androidアプリでローカルにデータを(永続的に)保存する3つの方法を本記事にまとめる。
備忘録程度
以下が3つの方法である。
1. Preference
2. ローカルファイル
3. SQLite
1. Preference
Preferenceは、データをキーと値で保存する
boolean、int、float、long、Stringの5つの型で値を保存できる
↓ String型の値を保存する場合のサンプルコード
Preference.java
// PreferenceでString型のデータを保存する
private void save(String key, String value) {
SharedPreferences pref = getContext().getSharedPreferences("pref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
//putXXXメソッドを使用して値を保存する(XXXには型が入る)
editor.putString(key, value);
editor.commit();
}
// Preferenceで保存したデータを取得する
private String load(String key) {
SharedPreferences pref = getContext().getSharedPreferences("pref", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
//getXXXメソッドを使用して保存した値を取得する(XXXに型が入る)
return pref.getString(key, null);
}
2. ローカルファイル
javaのOutputStream、InputStreamを利用してデータをローカルファイルに保存する
↓ テキストファイルでデータを保存する場合のサンプルコード
Localfile.java
// ローカルファイルにデータを保存する
private void save(String text) {
try {
OutputStream out = getContext().openFileOutput("test.txt", Context.MODE_PRIVATE);
PrintWriter writer = new PrintWriter(new OutputStreamWriter(out, "UTF-8"));
writer.append(text);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// ローカルファイルのデータを取得する
private String load() {
String text = "";
try {
InputStream in = getContext().openFileInput("test.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
String buf;
while((buf = reader.readLine()) != null){
text += buf + "\n";
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
return text;
}
3. SQLite
アプリ内に軽量なDBを作り、そこでデータを保管する方法。
長くなるので、別途記事にまとめる。