Androidにおけるファイル読み書きの実装方法

内部ストレージを利用したファイル操作

Androidアプリ開発におけるファイルの読み書きは、内部ストレージを活用することで安全に実装できます。アプリ専用のディレクトリに保存することで、他のアプリからのアクセスを防げます。

実装の流れ

基本的な実装は以下の要素から構成されます。まずファイルオブジェクトの生成を行い、その後に出力ストリームを使った書き込み、入力ストリームを使った読み込みを行います。

1. ファイルオブジェクトの準備

コンテキストのgetFilesDir()メソッドで取得したディレクトリを基準に、ファイルを指定します。

// 対象ファイルの定義
String targetFile = "sample_data.txt";
File dataFile = new File(getFilesDir(), targetFile);

2. データの書き込み処理

openFileOutput()を使用してファイル出力ストリームを取得します。try-with-resources構文を用いることで、自動的にリソースの解放が行えます。MODE_PRIVATEを指定することで、ファイルはアプリ内でのみアクセス可能になります。

// 書き込み内容の準備
String content = "サンプルテキストデータ";

// ファイルへの書き込み実行
try (FileOutputStream outputStream = openFileOutput(targetFile, MODE_PRIVATE)) {
    outputStream.write(content.getBytes(StandardCharsets.UTF_8));
    Log.d("FileWrite", "データ書き込み成功");
} catch (IOException e) {
    Log.e("FileWrite", "書き込みエラー発生", e);
}

3. データの読み込み処理

openFileInput()でファイル入力ストリームを開き、バッファを使って効率的にデータを読み取ります。ByteArrayOutputStreamを活用することで、可変長のデータを柔軟に処理できます。

// ファイルからのデータ読み込み
try (FileInputStream inputStream = openFileInput(targetFile)) {
    ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream();
    byte[] buffer = new byte[1024];
    int bytesRead;
    
    // バッファを使用した効率的な読み込み
    while ((bytesRead = inputStream.read(buffer)) != -1) {
        byteArrayStream.write(buffer, 0, bytesRead);
    }
    
    // バイトデータを文字列に変換
    String loadedData = byteArrayStream.toString(StandardCharsets.UTF_8.name());
    Log.d("FileRead", "読み込み成功: " + loadedData);
} catch (IOException e) {
    Log.e("FileRead", "読み込みエラー発生", e);
}

権限に関する注意点

内部ストレージへのアクセスは特別な権限を必要としませんが、Android 6.0以降、外部ストレージを使用する場合は実行時パーミッションの処理が必要です。対象のAndroidバージョンに応じて適切な権限管理を実装してください。

タグ: Android FileIO InternalStorage FileInputStream FileOutputStream

5月14日 09:09 投稿