ファイルアクセス

分類

  1. Preference
    1. 設定などを保存するときに使用する
  2. File
    1. 画像やテキストを扱うときに使う?
  3. SQLite
    1. アドレス帳のようなデータを保存するときに使用する

詳細

Preference

  • アクティビティにファイル名を定義する
    • private static final String FILE_NAME = ファイル名;
  • Preferenceにアクセスしたいメソッドの中に定義する
    • SharedPreferences preference = getSharedPreferences(FILE_NAME, MODE_PRIVATE);
    • MODE_PRIVATE
      • 他のアプリからのアクセスが不可
    • MODE_WORLD_READABLE
      • 他のアプリからの読み込み可
    • MODE_WORLD_WRITABLE
      • 他のアプリからの書き込み可
  • SharedPreferences.Editor editor = preference.edit();
  • 書き込み(文字列)
    • editor.putString(KEY, DATA);
    • editor.commit();
    • putStringの他に
    • putInt
    • putLong
    • putFloat
    • putBoolean がある
  • 読み出し(文字列)
    • String str = preference.getString(KEY, MSG);
    • MSGは、指定したKEYでデータを読み出せなかったときに、代わりにセットする文字列
    • getStringの他に…(省略)

File

  • アクティビティにファイル名を提議する
    • private static final String FILE_NAME = ファイル名;
  • Fileにアクセスしたいメソッドの中に定義する
    • 書き込み
      • FileOutputStream stream = openFileOutput(FILE_NAME, MODE_APPEND);
      • BufferedWriter out = new BufferedWriter(new OutputStreamWriter(stream));
      • out.write(文字列);
      • out.newLine(); /* 改行を入れたいとき(\nじゃダメなのかは未確認 */
      • out.close();
      • MODE_APPEND
        • 既存のファイルに追記するときに使うが、新規の時でも可
      • MODE_PRIVATE
        • 他のアプリからのアクセスが不可
      • MODE_WORLD_READABLE
      • MODE_WORLD_WRITABLE
    • 読み出し
      • FileInputStream stream = openFileInput(FILE_NAME);
      • BufferedReader in = new BufferedReader(new InputStreamReader(stream));
      • String line = "";
      • while( (line = in.readLine())! = null ) {
      • : (適時この中で読み込んだデータを変数へ格納などする)
      • }
      • in.close();
  • Fileアクセス時は、失敗することを考慮して、try {} catch(Exception e){}でコーディングする方がいいらしい。

SQLite

  • まずclassの定義が必要
    • public class CreateProductHelper extends SQLiteOpenHelper {
    • public CreateProductHelper(Context con){
    • super(con, DBファイル名, null, 1);
    • }
    • @Override
    • public void onCreate(SQLiteDatabase db) {}
    • @Override
    • public void onUpgrade(SQLiteDatabase db, int oldversion, int newversion) {}
    • }
  • アクティビティに以下のメンバを提議する
    • CreateProductHelper helper = null;
    • SQLiteDatabase db = null;
  • onCreateメソッドに以下を定義する
    • helper = new CreateProductHelper(属するクラス名.this);
  • 書き込む前にテーブルを作成しなければならない
    • db = helper.getWritableDatabase();
    • String sql = "create table KEY(" + "_id integer primary key autoincrement," +
    • "SUB_KEY1 text not null," + "SUB_KEY2 integer default 0)";
    • db.execSQL(spl);
    • /* KEYは保存するデータのグループ名みたいなもの */
    • /* SUB_KEYxは、保存するデータのキー。*/
    • /* いまのところ、textタイプとintegerタイプしか書き方がわからない */
  • 書き込み
    • db.beginTransaction();
    • ContentValues val = new ContentValues();
    • val.put(SUB_KEY1, セットしたい文字列);
    • val.put(SUB_KEY2, セットしたい文字列);
    • db.insert(KEY, null, val);
    • db.setTransactionSuccessful();
    • db.endTransaction();
  • 書き込み済みデータの更新
    • あとで
  • 読み出し
    • あとで