逆引きAndroid入門 ファイルを読み書きするには

ファイルを読み書きするには

ファイルを読み書きするには、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
などを組み合わせて使用する場合が多いでしょう。