Androidではjava.ioパッケージの標準ioが使用できるので特に難しいことはない。しかし、以下は注意すべきである。
Preferenceでやった様にエディットコントロールに入力された内容をファイルに保存して、起動されたときに読み込むアプリケーションを作ってみよう。
Contextクラスの各メソッドが使われるのが分かるだろう。fileListメソッドで自アプリケーション用のディレクトリのファイルリストを取得、openFileInputメソッドでファイルを読み込みオープン(InputFileStreamクラスのインスタンスが返される)、openFileOutputメソッドでファイルを書き込みオープン(OutputFileStreamクラスのインスタンスが返される)
package com.suddenAngerSytem;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.EditText;
public class FileAccess extends Activity {
final static String FILE_NAME = "save_edit.txt";
final static int EDIT_ID = 1000;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//自アプリケーション用のディレクトリにあるファイルリストを取得
final String[] strArray = fileList();
String edittingString = "";
//ファイルがあるかを確認
for(String str : strArray) {
if(str.equals(FILE_NAME)) {
try {
//ファイルがある場合は読み込み。
BufferedReader reader = new BufferedReader(new InputStreamReader(openFileInput(FILE_NAME)));
edittingString = reader.readLine();
reader.close();
}
catch(Exception e) {
//サンプルなのでエラーハンドリングしない。
}
}
}
EditText edit = new EditText(this);
edit.setText(edittingString);
edit.setId(EDIT_ID);
setContentView(edit);
}
//アクティビティがアクティブで無くなる際にファイルへ書き込む
protected void onPause() {
super.onPause();
try {
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(openFileOutput(FILE_NAME, MODE_PRIVATE)));
EditText edit = (EditText)findViewById(EDIT_ID);
writer.write(edit.getText().toString());
writer.close();
}
catch(Exception e) {
//サンプルなのでエラーハンドリングしない
}
}
}
SDカードへのアクセスも自アプリケーション用のディレクトリへのアクセスと変わらないが、エミュレータ上でSDカードを作成しないと確認できないため、説明する。
SDカードを作成するにはAndroidのSDKをインストールしたディレクトリの下のtoolsディレクトリで"mksdcard サイズ SDカードイメージファイル名"を実行する。
次にエミュレートする端末にSDカードを設定してやる。まずはAVD Managerを起動する
AVD Managerを起動したらSDカードに作成したSDカードイメージファイル名を設定して、AVDを作成する。
次に実行の構成を選択して、アプリケーションの起動設定を編集する
実行構成ダイアログでターゲットタブを選択し、作成したAVDを選択する。
実行をすると新しいエミュレータが立ち上がる。(ウインドウのタイトルにAVD名が表示される)
SDカードは/sdcardにマウントされ、/sdcard/xxxにアクセスできるようになる。