ファイルを読み書きするには、android.content パッケージ - ContextWrpper クラス、または、同クラスを継承したクラスを使用します。
通常よく使用する android.app パッケージ - Activity クラスは、上記のクラスを継承しているため、
Activity クラスから簡単にファイルを読み書きすることができます。
サンプルソースコード
package com.adakoda.filetest;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class FileTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Write
{
try {
FileOutputStream fileOutputStream = openFileOutput("myfile.txt", MODE_PRIVATE);
String writeString = "test";
fileOutputStream.write(writeString.getBytes());
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
// Read
{
try {
FileInputStream fileInputStream;
fileInputStream = openFileInput("myfile.txt");
byte[] readBytes = new byte[fileInputStream.available()];
fileInputStream.read(readBytes);
String readString = new String(readBytes);
Log.v("readString", readString);
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
}
}
サンプルソースコード解説
ファイルを書き込む場合、openFileOutput() を呼び出します。
このとき、第2引数には、
0、または、(android.contentパッケージ - Contextクラス定数である)MODE_PRIVATEを指定すると、アプリケーション専用モード、
MODE_APPEND を指定すると、追記モード、
MODE_WORLD_READABLE を指定すると、他のアプリケーションからも読み込みできるモード、
MODE_WORLD_WRITEABLE を指定すると、他のアプリケーションからも書き込みできるモード、
でファイルがオープンされます。
また、実際にデータを書き込むには、write() を呼び出します。
これとは逆に、ファイルを読み込む場合には、openFileInput() を呼び出し、
実際にデータを読み込むには、read() を呼び出します。
ここでは、説明が簡単になるような実装を紹介していますが、
処理を効率的に行うために、BufferReader + InputStreamReader、BufferWriter + OutputStreamWriter
などを組み合わせて使用する場合が多いでしょう。