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)パッケージのインポート:
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(); }