2012年9月24日月曜日

Android SDカードのファイルを読み書きする

実機で実行している場合、「マウント」をOFFします。
(SDカードに書き込みできず、マウントOFFに気づくのに小一時間゜・(ノД`)・゜・)

マニフェストファイルにSD カードのコンテンツの変更/削除の権限を与える設定を行います。
※SDカードから読み込むだけなら必要ありません。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

SDカードは端末によりパスが異なるのでgetExternalStorageDirectory()メソッドでパスを取得します。
String sdPath = Environment.getExternalStorageDirectory().getPath();

あとは普通のファイル入出力と同じです。

SDカードに書き込み
public void button1Click(View view) {
    try {
        //SDカードフォルダのパス
        String sdPath = Environment.getExternalStorageDirectory().getPath();
        //作成するファイル名
        String fileName = "/Hello.txt";
        //書き込み
        BufferedWriter bw = null;
        try {
            FileWriter fw = new FileWriter(sdPath + fileName);
            bw = new BufferedWriter(fw);
            bw.write("ハロー");
        } finally {
            bw.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

SDカードに書き込み
public void button2Click(View view) {
    try {
        //SDカードフォルダのパス
        String sdPath = Environment.getExternalStorageDirectory().getPath();
        //読み込むァイル名
        String fileName = "/Hello.txt";
        //読み込み
        BufferedReader br = null;
        try {
            FileReader fr = new FileReader(sdPath + fileName);
            br = new BufferedReader(fr);
            StringBuilder sb = new StringBuilder();   
            String str;   
            while((str = br.readLine()) != null){   
                sb.append(str +"\r\n");   
            }
            Toast.makeText(this, sb.toString(), Toast.LENGTH_LONG).show();
        } finally {
            br.close();
        }
    }catch (Exception e){
        e.printStackTrace();
    }
    
}

0 件のコメント: