飴屋

Androidアプリメモ/メモ3

ファイル出力したい

入力されたデータはSQLiteのファイルとして端末内のデータベースに保管されるわけですが、何かの拍子でデータが消失するリスクがあると思います。電車に携帯を置き忘れることもあれば、機種変更で新しい端末に乗り換えることもあります。いずれ場合もデータを端末に保管している以上、それらは失われる可能性があります。そんなときはデータを外部ファイルに保存してリスクを分散できたらよいかもしれません。現代であればクラウドサーバにバックアップを取るというのも一つの手かもしれませんが、サーバサイドの話はここではしません。

また、蓄積したデータは、アプリの外でも有効に活用できる可能性があります。外部ファイルに出力すれば、そのファイルを読み込んで自由に編集できるようになります。

というわけで、体重の計測データをCSVファイルとして出力することにしました。

FileOutputStream fos = null;
try {
Date dt = new Date();
String file = "weight"+String.format("%04d%02d%02d%02d%02d", dt.getYear()+1900,dt.getMonth()+1,dt.getDay(),dt.getHours(),dt.getMinutes())+".csv";
fos = openFileOutput(file,Context.MODE_PRIVATE);
fos.write(「ファイルの内容」);
} catch (FileNotFoundException e) {

} catch (IOException e) {

} finally {
if (fos != null) {
try {
fos.flush();
fos.close();
} catch (IOException e) {

}
Toast.makeText(this,getString(R.string.msgCSVExported),Toast.LENGTH_LONG).show();
}
}

通常のJavaで行うのと同じようにFileOutputStreamのwriteメソッドで文字列をファイルに記録できます。Androidアプリでは、そのFileOutputStreamオブジェクトをopenFileOutputを使って簡単に作成できます。第一引数には現在日時を含むファイル名を指定し、第二引数にはファイルの権限に関する設定をつけています。

openFileOutputを使うと、端末の「data/data/(アプリのID)/files」ディレクトリの中にファイルができます。ここに保存されていることをどうやってユーザに通知したものかはまた後で考えましょう。

メモ一覧