Androidデータ持続化
6634 ワード
Androidでは、データの永続化には主に4つの方法があります.SharedPreferencesファイルI/O、SQLiteデータベース、ContentProviderコンポーネントです.本文はまず前の2種類を紹介する.
1.SharedPreferencesは軽量レベルのデータ格納メカニズムであり、キー値対(key-value)でデータを格納し、一般的にキー値という一対一の対応関係で構成情報を格納し、データベースより効率的である.しかし、booleans、floats、ints、longs、and stringsなどの基本的なデータ型しか格納できません.一般的に複雑なタイプのデータはBase 64符号化に変換され、変換されたデータは文字列としてXMLファイルに保存され、SharedPreferencesで保存されます.一般的にはアプリケーションのプライベートPreferencesディレクトリ(/data/data/<パッケージ名>/shared_prefs/)にデフォルトで保存されます.
次の手順に従います.
01)パッケージのインポート:
02)インスタンス化
03)エディタの取得
04)データを修正して提出する
05)データの取り出し
以上がAndroidのSharedPreferencesの使い方です.作成したPreferencesファイルの保存場所はEclipseで確認できます.
2.ファイルストア01)操作ファイル内容を保存する:Context.OpenFileOutputは、それぞれファイル名とストレージモードの出力ストリームを取得します.ファイル内容の読み込み:Context.OpenFileInputは入力ストリームを取得し、パラメータはファイル名です.ファイルの削除:Context.deleteFileは指定したファイルを削除します.パラメータは削除するファイルの名前です.ファイル名リストの取得:Context.fileListはfilesディレクトリの下にあるすべてのファイル名配列を取得します.*ファイルパスの取得方法:絶対パス:/data/data//files/filename Context:Context.getFilesDir()は「/data/data//files」を取得できます.
02)4種類のファイル保存モードContext.MODE_PRIVATEはデフォルトの操作モードで、このファイルがプライベートデータであることを表し、アプリケーション自身がアクセスするしかなく、このモードで書き込まれた内容は元のファイルの内容を上書きします.Context.MODE_APPENDはファイルが存在するかどうかをチェックし、存在する場合はファイルに内容を追加し、そうでない場合は新しいファイルを作成します.MODE_WORLD_READADBLEは、現在のファイルが他のアプリケーションによって読み取れることを示す.MODE_WORLD_WRITEABLEは、現在のファイルを他のアプリケーションに書き込むことができることを示しています.モードを使用する場合、OpenFileOutput(FILENAME、Context.MODE_PRIVATE+MODE_WORLD_READADBLE)のような複数のモードを選択するには、「+」を使用します.
1.SharedPreferencesは軽量レベルのデータ格納メカニズムであり、キー値対(key-value)でデータを格納し、一般的にキー値という一対一の対応関係で構成情報を格納し、データベースより効率的である.しかし、booleans、floats、ints、longs、and stringsなどの基本的なデータ型しか格納できません.一般的に複雑なタイプのデータはBase 64符号化に変換され、変換されたデータは文字列としてXMLファイルに保存され、SharedPreferencesで保存されます.一般的にはアプリケーションのプライベートPreferencesディレクトリ(/data/data/<パッケージ名>/shared_prefs/)にデフォルトで保存されます.
次の手順に従います.
01)パッケージのインポート:
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
02)インスタンス化
SharedPreferences mSharedPreferences = this.getSharedPreferences("mFiles", MODE_PRIVATE);
03)エディタの取得
SharedPreferences.Editor mEditor = mSharedPreferences.edit();
04)データを修正して提出する
mEditor.putString("mValue", "mmmm");
mEditor.commit();
05)データの取り出し
String name = mSharedPreferences.getString("mValue", "zero");
以上がAndroidのSharedPreferencesの使い方です.作成したPreferencesファイルの保存場所はEclipseで確認できます.
DDMS->File Explorer /<package name>/shared_prefs/mFiles.xml
2.ファイルストア01)操作ファイル内容を保存する:Context.OpenFileOutputは、それぞれファイル名とストレージモードの出力ストリームを取得します.ファイル内容の読み込み:Context.OpenFileInputは入力ストリームを取得し、パラメータはファイル名です.ファイルの削除:Context.deleteFileは指定したファイルを削除します.パラメータは削除するファイルの名前です.ファイル名リストの取得:Context.fileListはfilesディレクトリの下にあるすべてのファイル名配列を取得します.*ファイルパスの取得方法:絶対パス:/data/data//files/filename Context:Context.getFilesDir()は「/data/data//files」を取得できます.
02)4種類のファイル保存モードContext.MODE_PRIVATEはデフォルトの操作モードで、このファイルがプライベートデータであることを表し、アプリケーション自身がアクセスするしかなく、このモードで書き込まれた内容は元のファイルの内容を上書きします.Context.MODE_APPENDはファイルが存在するかどうかをチェックし、存在する場合はファイルに内容を追加し、そうでない場合は新しいファイルを作成します.MODE_WORLD_READADBLEは、現在のファイルが他のアプリケーションによって読み取れることを示す.MODE_WORLD_WRITEABLEは、現在のファイルを他のアプリケーションに書き込むことができることを示しています.モードを使用する場合、OpenFileOutput(FILENAME、Context.MODE_PRIVATE+MODE_WORLD_READADBLE)のような複数のモードを選択するには、「+」を使用します.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import android.content.Context;
private static final String FILE_NAME = "cal.gg";
/* */
public void onSaveData(String exp, String result){
FileOutputStream out = null;
BufferedWriter writer = null;
StringBuilder text = new StringBuilder();
text.append(exp).append("=").append(result).append("\r
");
try {
out = openFileOutput(FILE_NAME, Context.MODE_APPEND);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(text.toString());
writer.write("\r
");
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if (writer != null){
writer.close();
}
} catch (IOException ep){
ep.printStackTrace();
}
}
}
/* */
public String loadSaveData(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput(FILE_NAME);
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine())!= null){
content.append(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally{
try {
if (reader != null){
reader.close();
}
} catch (IOException ep){
ep.printStackTrace();
}
}
return content.toString();
}