libro
www.tuyano.com
Google androidプログラミング入門

ファイルアクセスに挑戦! (7/7)

作成:2010-06-24 09:33
更新:2010-06-24 09:33

■SDカードにファイルを保存する

ファイルの保存は、このように「許可されている場所にのみ保存する」という形となるため、意外と面倒です。が! 実は、もっと自由にファイルを保存する方法もないわけではありません。それは「SDカード」を利用するのです。

多くのAndroid携帯では、標準でSDカードが用意されています。これを外部記憶メディアとしてさまざまなデータ類を保存できるようになっているわけですね。SDカードなら、そのままパソコンからマウントしてファイルをコピーしたりすることもできます。Android本体に保存するより、こっちのほうがはるかに現実的でしょう。

先ほどの読み込み・書き出し用のメソッドを修正し、SDカードにファイルを保管するようにしてみましょう(下のリストを参照)。修正した部分は、それぞれのメソッドで1行だけ。変数pathへの値の代入部分を変えただけです。

SDカードは、"/sdcard/"というディレクトリとして扱うことができます。"/sdcard/data.txt"とすれば、SDカードのルート(カードを開いた直下の階層)に「data.txt」というファイル名でファイルを保存することができます。

ただし! これだけでは、実はファイルの保存はできません。SDK 1.6より、外部メディアにデータを書き出す際には、アプリケーションにそのためのパーミッション設定を用意してやる必要があります。これを行っていないと、保存時に「操作が許可されていない」として保存に失敗します。

このパーミッション設定は、AndroidManifest.xmlに記述します。この中に<manifest>というタグがありますが、このタグ内に、以下の文を追記してください。
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<manifest>タグの中なら場所はどこでもかまいません。これで、このアプリケーションは外部メディアへの書き出しが許可されます。実際に試してみて、SDカードに「data.txt」ファイルが保存されるか確認してみましょう。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

※メソッドの修正

public void saveText(String data) throws IOException {
	String path = "/sdcard/data.txt"; // ★
	FileWriter writer = new FileWriter(path);
	writer.write(data);
	writer.close();
}

public void loadText() throws IOException {
	String path = "/sdcard/data.txt"; // ★
	FileReader reader = new FileReader(path);
	char[] buffer = new char[1000];
	reader.read(buffer);
	edit.setText(new String(buffer).trim());
	reader.close();
}


※AndroidManifest.xmlへの追記
<uses-permission
	android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
※関連コンテンツ

「Google androidプログラミング入門」に戻る