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();
    }
}