通常我将 Realm 用作:
RealmConfiguration config = new RealmConfiguration.Builder(applicationContext).deleteRealmIfMigrationNeeded().build();
如何将包含数据的数据库添加到项目的 Assets 文件夹并读取它?
最佳答案
自 Realm Java 0.91.0 以来,RealmConfiguration
上有一个 assetFile(String)
选项,它会自动从 Assets 中复制文件并在需要时使用该文件(例如如果 Realm 是第一次打开或由于某种原因已被删除):
RealmConfiguration config = new RealmConfiguration.Builder()
.assetFile("path/to/file/in/assets") // e.g "default.realm" or "lib/data.realm"
.deleteRealmIfMigrationNeeded()
.build()
上面的代码会在第一次打开 Realm 时从 Assets 中复制文件,或者如果它由于迁移而被删除(请记住在这种情况下更新 Assets Realm)。
旧答案:
可以在 assets 文件夹中 bundle 一个 Realm 数据库,但是您只需在第一次启动应用程序时从那里复制它即可。
copyBundledRealmFile(this.getResources().openRawResource(R.raw.default_realm), "default.realm");
private String copyBundledRealmFile(InputStream inputStream, String outFileName) {
try {
File file = new File(this.getFilesDir(), outFileName);
FileOutputStream outputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buf)) > 0) {
outputStream.write(buf, 0, bytesRead);
}
outputStream.close();
return file.getAbsolutePath();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
关于android - 将数据预填充到 Assets 中的 Realm ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33674982/