アプリのアンインストール時に全て削除されます。
しかし、カメラで撮影した写真(画像ファイル)やエディタで編集したテキストファイル等は
アプリをアンインストールしても残しておきたいファイルです。
そんなファイルを保存するためのディレクトリが外部ストレージのパブリックディレクトリです。
外部ストレージのパブリックディレクトリにファイルを作成し、データを保存する
外部ストレージのパブリックディレクトリにファイルを作成し、データを書き込むコードは以下のようになります。
※コードでは前回同様http://developer.android.com/training/basics/data-storage/files.htmlにあるisExternalStorageWritable()とisExternalStorageReadable()を使ってます。
※コードでは前回同様http://developer.android.com/training/basics/data-storage/files.htmlにあるisExternalStorageWritable()とisExternalStorageReadable()を使ってます。
// 外部ストレージに書き込み可能かチェック if (isExternalStorageWritable()) { FileOutputStream outputStream; // ※以下、例外処理は省略 // パブリックディレクトリにファイルを作成し、書き込む。 File file = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myfile.txt"); outputStream = new FileOutputStream(file); outputStream.write("test".getBytes()); // ちなみにDDMSで確認したところ、確認時の環境下では // "/mnt/sdcard/Download/myfile.txt" // に書き込まれた。 outputStream.close(); }アプリPrivate領域に保存する時との違いは、getExternalFilesDir()ではなくEnvironment.getExternalStoragePublicDirectory()を使う点です。
Environment.getExternalStoragePublicDirectory()の引数に指定するディレクトリのタイプは、getExternalFilesDir()と同じです。
外部ストレージのパブリックディレクトリに保存したファイルからデータを読み込む
ファイルからデータを読み込むコードは以下のようになります。
// 外部ストレージから読み込み可能かチェック if (isExternalStorageReadable()) { FileInputStream inputStream; byte[] buffer = new byte[256]; // ※以下、例外処理は省略 File file = new File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "myfile.txt"); if (file.exists()) { inputStream = new FileInputStream(file); inputStream.read(buffer); String data = new String(buffer, "UTF-8"); inputStream.close(); } }こちらもgetExternalFilesDir()ではなくEnvironment.getExternalStoragePublicDirectory()を使う点が異なるだけです。