2010年7月14日水曜日

Android アプリでSDカードを使う方法

AndroidアプリでSDカードにデータを読み書きする方法です。

  1. エミュレータでは必要ありませんが、実機でSDカードを使用する場合は以下のコードを AndroidManifest.xml に記述します。この記述がないと例えばファイル書き込みをした際に FileNotFoundException がthrowされます。権限がないのです。
    1. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">  
    2. </uses-permission>  
  2. あとは普通にファイル入出力するだけです。以下はファイル書き込みのサンプルです。注意点はSDカードのパスです。パスは /sdcard/ です。
    1. import java.io.BufferedWriter;  
    2. import java.io.File;  
    3. import java.io.FileOutputStream;  
    4. import java.io.IOException;  
    5. import java.io.OutputStreamWriter;  
    6.   
    7. import android.app.Activity;  
    8.   
    9. private void save() throws IOException {  
    10.   
    11.     String fileName = "/sdcard/" + getPackageName() + "/sample.txt";  
    12.   
    13.     File file = new File(fileName);  
    14.     file.getParentFile().mkdir();  
    15.   
    16.     FileOutputStream fos = new FileOutputStream(file, true);  
    17.     OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");  
    18.     BufferedWriter bw = new BufferedWriter(osw);  
    19.   
    20.     bw.write("ファイル書き込みテスト");  
    21.     bw.flush();  
    22.     bw.close();  
    23. }  
  3. 作成されたか DDMS の File Explorer で見てみましょう。getPackageName()でパッケージ名をディレクトリ名に指定しているので、サンプルでは sdcard/com.kitsugim/sample.txt となっています。
  4. ファイルは出来ているようなので、最後にちゃんと書き込みが出来ているかの確認です。同じくDDMS の FileExplorer からファイルをPCに保存できるので、保存してからテキストエディタで開いてみます。

はい、ちゃんと書き込みもできてます。

1 件のコメント:

  1. AndroidのSDカードを管理する方法:http://goo.gl/cywF4H
    ここで一緒に共有します。

    返信削除