通常我使用Realm作为:
RealmConfiguration config = new RealmConfiguration.Builder(applicationContext).deleteRealmIfMigrationNeeded().build();
Run Code Online (Sandbox Code Playgroud)
如何将包含数据的数据库添加到项目的assets文件夹中并读取它?
由于Realm Java 0.91.0上有一个assetFile(String)选项,RealmConfiguration它会自动从资产中复制文件并在需要时使用它(例如,如果Realm第一次打开或由于某种原因被删除):
RealmConfiguration config = new RealmConfiguration.Builder()
.assetFile("path/to/file/in/assets") // e.g "default.realm" or "lib/data.realm"
.deleteRealmIfMigrationNeeded()
.build()
Run Code Online (Sandbox Code Playgroud)
以上将在第一次打开Realm时从资产中复制文件,或者由于迁移而被删除(请记住在这种情况下更新资产Realm).
老答案:
可以将一个Realm数据库捆绑在assets文件夹中,但是您只需要在第一次启动应用程序时从那里复制它.
我们有一个如何在这里复制文件的示例:https://github.com/realm/realm-java/blob/master/examples/migrationExample/src/main/java/io/realm/examples/realmmigrationexample/MigrationExampleActivity. Java的#L101-Lundefined
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5719 次 |
| 最近记录: |