忍者ブログ

アンドロイドのあれこれ

アプリからデータを内部&外部ストレージへの保存
アプリからデータ(ファイル)を内部と外部のデバイスへの保存方法を簡単に紹介します。

- デバイスの内部ストレージ上にプライベートなデータの保存
デバイスの内部ストレージに直接ファイルを保存することができます。デフォルトでアプリケーションにプライベートで、他のアプリケーションはそれにアクセスすることはできません 。ユーザーがアプリケーションをアンインストール、またアプリ情報からデータを消去するとそれらのファイルは削除されます。
    String filename = "my_file";
String filedata = "My string data";
try {
FileOutputStream fos = openFileOutput(filename, Context.MODE_PRIVATE);
fos.write(filedata.getBytes());
fos.close();
} catch (IOException e) {

}

部ストレージに保存されているファイルを確認したい場合は fileList() を使います。
    String[] savedList = fileList();
for (int i = 0; i < fileList.length; i++) {
Log.v("FILE:"+i, fileList[i]);
}

また内部ストレージのファイル操作は以下のメソッドから実行できます

getFilesDir()
保存されているファイルシステムディレクトリの絶対パスの取得

getDir()
内部ストレージ内にディレクトリの作成

deleteFile()
保存されたファイルの削除

永続的にファイル保存するのではなく、一時的にキャッシュしておきたいデータの場合は getCacheDir() を使います。
    String filename = "my_cache_file";
String filedata = "My cache data";
File cacheDir = getCacheDir();

File saveCacheFile = new File(cacheDir, filename);
try {
FileOutputStream outputStream = new FileOutputStream(saveCacheFile);
outputStream.write(filedata.toBytes());
outputStream.close();
} catch (IOException e) {
}


- 共有の外部ストレージ上にパブリックなデータの保存
SDカードなどのような外部ストレージにデータを書きこみする前に、マウントされているか、リードオンリー(読み取りのみ)かを確認します。
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) { //マウントされているか

} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { //読み取りのみか(書き込み不可)

}

外部ストレージにデータを保存する
    //ディレクトリーを用意する
String mydirName = "MyDirectory";
File myDir = new File(Environment.getExternalStorageDirectory(), mydirName);
if (!myDir.exists()) { //MyDirectoryというディレクトリーがなかったら作成
myDir.mkdirs();
}

String filename = "my_file";
String filedata = "My string data";
File saveFile = new File(myDir, filename);
try {
FileOutputStream outputStream = new FileOutputStream(saveFile);
outputStream.write(filedata.getBytes());
outputStream.close();
} catch (IOException e) {
}

COMMENT
NAME
TITLE
MAIL (非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS (コメント編集に必須です)
SECRET
管理人のみ閲覧できます
 
PR
© Android Advent
powered by 忍者ツールズ / 忍者ブログ / [PR]