アンドロイドのあれこれ
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
アプリからデータを内部&外部ストレージへの保存
アプリからデータ(ファイル)を内部と外部のデバイスへの保存方法を簡単に紹介します。
- デバイスの内部ストレージ上にプライベートなデータの保存
デバイスの内部ストレージに直接ファイルを保存することができます。デフォルトでアプリケーションにプライベートで、他のアプリケーションはそれにアクセスすることはできません 。ユーザーがアプリケーションをアンインストール、またアプリ情報からデータを消去するとそれらのファイルは削除されます。
- デバイスの内部ストレージ上にプライベートなデータの保存
デバイスの内部ストレージに直接ファイルを保存することができます。デフォルトでアプリケーションにプライベートで、他のアプリケーションはそれにアクセスすることはできません 。ユーザーがアプリケーションをアンインストール、またアプリ情報からデータを消去するとそれらのファイルは削除されます。
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() を使います。
また内部ストレージのファイル操作は以下のメソッドから実行できます
getFilesDir()
保存されているファイルシステムディレクトリの絶対パスの取得
getDir()
内部ストレージ内にディレクトリの作成
deleteFile()
保存されたファイルの削除
永続的にファイル保存するのではなく、一時的にキャッシュしておきたいデータの場合は getCacheDir() を使います。
- 共有の外部ストレージ上にパブリックなデータの保存
SDカードなどのような外部ストレージにデータを書きこみする前に、マウントされているか、リードオンリー(読み取りのみ)かを確認します。
外部ストレージにデータを保存する
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