Переименовать файл базы данных в ExternalFilesDir в Android

Я копирую свою предварительно заполненную базу данных из ресурсов в каталог внешних файлов приложения. Мой код -

private boolean copyDatabaseFromAssets(Context context, String databaseName , boolean overwrite)  {

    String outputFile_path = context.getExternalFilesDir(null) + "/" + databaseName;
    File outputFile = new File(outputFile_path);

    if (outputFile.exists() && !overwrite) {
        return true;
    }

    outputFile_path = context.getExternalFilesDir(null) + "/" + databaseName + ".temp";
    outputFile = new File(outputFile_path);
    Log.d(LOGCAT, "Initial File Path : " + outputFile_path);
    Log.d(LOGCAT, "Initial File : " + outputFile);
    outputFile.getParentFile().mkdirs();

    try {
        InputStream inputStream = context.getAssets().open(databaseName);
        OutputStream outputStream = new FileOutputStream(outputFile);

        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) > 0) {
            outputStream.write(buffer, 0, length);
        }

        outputStream.flush();
        outputStream.close();
        inputStream.close();

        outputFile_path = context.getExternalFilesDir(null) + "/" + databaseName;
        outputFile = new File(outputFile_path);
        Log.d(LOGCAT, "Final File Path : " + outputFile_path);
        Log.d(LOGCAT, "Final File : " + outputFile);

        if(outputFile.renameTo(outputFile)){
            Log.d(LOGCAT, "Rename was successful!");
        } else {
            Log.d(LOGCAT, "Rename was NOT successful!");
        }


    } catch (IOException e) {
        if (outputFile.exists()) {
            outputFile.delete();
        }
        return false;
    }

    return true;
}

Да, упомянутый код копирует базу данных из папки активов во внешний каталог приложения. Но проблема, с которой я сталкиваюсь, заключается в том, что база данных не переименовывается обратно в свое первоначальное имя. Мой соответствующий logcat -

11-25 21:07:01.487 24573-24573/? D/MainActivity: Initial File Path : /storage/emulated/0/Android/data/in.atultiwari.testapp/files/mydb.db.temp
11-25 21:07:01.487 24573-24573/? D/MainActivity: Initial File : /storage/emulated/0/Android/data/in.atultiwari.testapp/files/mydb.db.temp
11-25 21:07:01.509 24573-24573/? D/MainActivity: Final File Path : /storage/emulated/0/Android/data/in.atultiwari.testapp/files/mydb.db
11-25 21:07:01.509 24573-24573/? D/MainActivity: Final File : /storage/emulated/0/Android/data/in.atultiwari.testapp/files/mydb.db
11-25 21:07:01.510 24573-24573/? D/MainActivity: Rename was NOT successful!

Я также использую следующие разрешения в манифесте -

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Я часами не могу понять, где я ошибаюсь?

0 ответов

Другие вопросы по тегам