已将数据预先填充到资产中的领域?

2024-04-25

通常我使用 Realm 作为:

RealmConfiguration config = new RealmConfiguration.Builder(applicationContext).deleteRealmIfMigrationNeeded().build();

如何将包含数据的数据库添加到项目的资产文件夹中并读取它?


自 Realm Java 0.91.0 以来,出现了assetFile(String)上的选项RealmConfiguration它将自动从资产中复制文件并在需要时使用该文件(例如,如果领域是第一次打开或由于某种原因已被删除):

RealmConfiguration config = new RealmConfiguration.Builder()
  .assetFile("path/to/file/in/assets") // e.g "default.realm" or "lib/data.realm"
  .deleteRealmIfMigrationNeeded()
  .build()

第一次打开 Realm 或由于迁移而删除资产时,上面的代码将从资产中复制文件(在这种情况下请记住更新资产 Realm)。


旧答案:

可以将 Realm 数据库捆绑到资产文件夹中,但是您只需在第一次启动应用程序时从那里复制它即可。

我们在这里有一个如何复制文件的示例:https://github.com/realm/realm-java/blob/master/examples/migrationExample/src/main/java/io/realm/examples/realmmigrationexample/MigrationExampleActivity.java#L101-Lundefined 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

已将数据预先填充到资产中的领域? 的相关文章

随机推荐