Java Realmのファイルをバックアップ・リストアしたい
Realmを使用していますが、データベースデータのバックアップ・リストアをしたいと思っています。
この方法が正しいかわかりませんが、以下のようなコードで試みています。しかしエラーが出てしまいます。
W/zygote: Got a deoptimization request on un-deoptimizable method void java.io.FileOutputStream.open0(java.lang.String, boolean)
W/System.err: java.io.FileNotFoundException: /storage/emulated/0/test.realm (Permission denied)
ファイルアクセスの権限は許可しています。
また次の一文もManifastに記述しています。
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
リストアは下記ソースの逆手順で、と考えていますが、そもそもrealmを使用している状態で上書いていいのか?とも思いますがどうなんでしょうか。
ほかに何が必要なのでしょうか。
ご指導いただければ幸いです。よろしくお願いいたします。
//コピー元ファイル
File inputFile = new File(getFilesDir(), "default.realm");
//コピーする
fileCopy(context , inputFile);
public static void fileCopy(Context context , File inputFile) {
try {
//Fileオブジェクトを生成する
FileInputStream fis = new FileInputStream(inputFile);
FileOutputStream fos = new FileOutputStream(Environment.getExternalStorageDirectory().getPath() + "/test.realm");
//入力ファイルをそのまま出力ファイルに書き出す
byte buf[] = new byte[256];
int len;
while ((len = fis.read(buf)) != -1) {
fos.write(buf, 0, len);
}
//終了処理
fos.flush();
fos.close();
fis.close();
System.out.println("コピーが完了しました。");
} catch (IOException ex) {
//例外時処理
System.out.println("コピーに失敗しました。");
ex.printStackTrace();
}
}