ファイルアクセス
分類
分類
- Preference
- 設定などを保存するときに使用する
- File
- 画像やテキストを扱うときに使う?
- SQLite
- アドレス帳のようなデータを保存するときに使用する
詳細
詳細
Preference
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
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
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();
- 書き込み済みデータの更新
- あとで
- 読み出し
- あとで