如何删除 Android Room 数据库的文件?

Kev*_*Kev 4 delete-file sqliteopenhelper android-room

我已经实现了一个房间数据库,该数据库在应用程序第一次启动时使用SQLiteAssetHelper从资源文件中分发

数据库包含游戏状态数据,因此如果玩家想重新开始,我想再次从资源中复制数据库文件并覆盖“本地/内部”文件。

所以我的想法是删除内部数据库文件,以便SQLiteAssetHelper再次从资源中复制初始数据库。

谢谢!

凯夫

Mic*_*ran 10

这是一个工作示例:

public static void deleteDatabaseFile(Context context, String databaseName) {
    File databases = new File(context.getApplicationInfo().dataDir + "/databases");
    File db = new File(databases, databaseName);
    if (db.delete())
        System.out.println("Database deleted");
    else
        System.out.println("Failed to delete database");

    File journal = new File(databases, databaseName + "-journal");
    if (journal.exists()) {
        if (journal.delete())
            System.out.println("Database journal deleted");
        else
            System.out.println("Failed to delete database journal");
    }
}
Run Code Online (Sandbox Code Playgroud)

但老实说,我认为在运行时删除数据库既不安全也不可靠。您必须确保没有任何东西在使用它,并且没有与数据库的任何开放连接。


KaM*_*yLL 7

您可以使用专用方法,而不是手动删除数据库文件

context.deleteDatabase("database_name")
Run Code Online (Sandbox Code Playgroud)