我在我的应用程序中使用 RoomDB。能够执行crud操作。
其实我想看看db文件。
getDatabasePath("user.db").getAbsolutePath();
上面的代码给了我 db 文件保存的目录
目录是这样的
/data/data/com.example.manvish.roomdb/databases/user.db
但即使在命令提示符下使用 sudo,我仍然无法访问数据目录。
现在我想将 DB 文件位置更改为内部存储器或 SD 卡中的其他一些文件夹。我怎样才能做到这一点?
最佳答案
Java解决方案:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
private static final String DB_NAME = "stack_overflow_db";
private static final String DB_PATH = String.format("%s/%s",
Environment.getExternalStorageDirectory().getAbsolutePath(), DB_NAME);
public static synchronized SofDatabase getInstance(Context aContext) {
if (sInstance == null) {
sInstance = Room.databaseBuilder(aContext, SofDatabase.class, DB_PATH)
.fallbackToDestructiveMigration()
.addCallback(roomCallback).build(); //adding callback from Room
}
return sInstance;
}
打回来
/**
* Get Notified once db is created
*/
private static final RoomDatabase.Callback roomCallback = new RoomDatabase.Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
Log.i("SOF", db.getPath()); //which prints out --> I/SOF: /storage/emulated/0/stack_overflow_db
// add some jobs once db is created
}
};
关于android - 如何更改 Room Database 的默认数据库文件位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48903918/