文字列をファイルに保存する (ローカルファイルへの書き込み) - Android

Androidアプリで文字列情報をファイルに保存する方法を紹介します。

アプリケーション作成情報

  • ProjectName : LocalFileAcccess
  • ApplicationName : LocalFileAccess
  • PackageName : iPentec.LocalFileAccess
  • Activity : LocalFileAccessActivity
  • Androidのバージョンは2.3.3にしました

UI

下図のUIを準備します。ボタンを一つ配置します。


ボタンのクリックイベントをonClick_Button1に設定します。

コード (LocalFileAccessActivity.java)

package iPentec.LocalFileAccess;

import android.app.Activity;
import android.os.Bundle;
import android.view.*;
import java.io.*; 


public class LocalFileAccessActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void onClick_Button1(View view){
    	try{
    		OutputStream os = openFileOutput("test.txt",MODE_PRIVATE);
    		OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");

    		PrintWriter pw = new PrintWriter(osw);
    		pw.append("TEST Text");
    		pw.close();
    		osw.close();
    		os.close();
    	}catch(IOException e){
    		e.printStackTrace();
    	}
    } 
}

解説 (onClick_Button1)

OutputStream os = openFileOutput("test.txt",MODE_PRIVATE);
にて出力用のストリームを作成します。"test.txt"がファイル名になります。Androidの場合はアプリケーションごとに確保された領域内にファイルが作成されるため、ファイル名のみを与えます。今回はこのアプリケーションのみで使うファイルのため第二引数はMODE_PRIVATEを指定します。

OutputStreamWriter osw = new OutputStreamWriter(os,"UTF-8");
OutputStreamWriterを準備します。第一引数にはOutputStreamを第二引数にはエンコード形式を設定します。今回はUTF-8形式で保存します。

PrintWriter pw = new PrintWriter(osw);
文字列を書き込むためのPrintWriterクラスを作成します。

pw.append("TEST Text");
文字列を書き込みます。

pw.close();
osw.close();
os.close();
PrintWriter,OutputStreamWriter,OutputStreamを閉じます。

動作確認

アプリケーションを実行します。

エミュレーターが起動します。ロック画面を解除するとアプリケーションの画面が表示されます。(下図参照)


ADBを起動します。ADBの起動についてはこちらの記事を参照してください。ADBの起動後、以下のコマンドを実行します。
cd /data/data
または
cd data/data



続いて
ls
コマンドを実行します。/data/dataディレクトリ内のファイルとディレクトリ一覧が表示されます。ディレクトリの中に作成したアプリケーションのネームスペースのディレクトリを探します。今回はiPentec.LocalFileAccessになります。lsコマンドの結果のいちばん最後にありました。


cd iPentec.LocalFileAccess
コマンドを実行してディレクトリを変更します。
ls
コマンドを実行し /data/data/iPentec.LocalFileAccess ディレクトリ内にあるファイルとディレクトリの一覧を表示します。libとfilesディレクトリがあります。


cd files
コマンドを実行し、カレントディレクトリを /data/data/iPentec.LocalFileAccess/files に変更します。
ls
コマンドを実行し、ファイルとディレクトリの一覧を表示します。このディレクトリは空であることがわかります。


エミューレーターのアプリケーションのボタンをクリックします。ボタンクリック後
ls
コマンドを実行します。test.txtファルが作成されています。


cat text.txt
コマンドを実行します。test.txtファイルの内容が表示されます。"TEST Text"の文字列が書き込まれていることが確認できました。


JavaのコードからAndroid端末のローカルファイルへの書き込みができました。
著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-04
作成日: 2011-08-21
iPentec all rights reserverd.