ファイルアクセスに挑戦! (7/7)
作成:2010-06-24 09:33
更新: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>というタグがありますが、このタグ内に、以下の文を追記してください。
多くのAndroid携帯では、標準でSDカードが用意されています。これを外部記憶メディアとしてさまざまなデータ類を保存できるようになっているわけですね。SDカードなら、そのままパソコンからマウントしてファイルをコピーしたりすることもできます。Android本体に保存するより、こっちのほうがはるかに現実的でしょう。
先ほどの読み込み・書き出し用のメソッドを修正し、SDカードにファイルを保管するようにしてみましょう(下のリストを参照)。修正した部分は、それぞれのメソッドで1行だけ。変数pathへの値の代入部分を変えただけです。
SDカードは、"/sdcard/"というディレクトリとして扱うことができます。"/sdcard/data.txt"とすれば、SDカードのルート(カードを開いた直下の階層)に「data.txt」というファイル名でファイルを保存することができます。
ただし! これだけでは、実はファイルの保存はできません。SDK 1.6より、外部メディアにデータを書き出す際には、アプリケーションにそのためのパーミッション設定を用意してやる必要があります。これを行っていないと、保存時に「操作が許可されていない」として保存に失敗します。
このパーミッション設定は、AndroidManifest.xmlに記述します。この中に<manifest>というタグがありますが、このタグ内に、以下の文を追記してください。
<uses-permission<manifest>タグの中なら場所はどこでもかまいません。これで、このアプリケーションは外部メディアへの書き出しが許可されます。実際に試してみて、SDカードに「data.txt」ファイルが保存されるか確認してみましょう。
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
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"/>
※関連コンテンツ