android – 将预填充数据转换成资产的领域?

前端之家收集整理的这篇文章主要介绍了android – 将预填充数据转换成资产的领域?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
通常我使用领域:
RealmConfiguration config = new RealmConfiguration.Builder(applicationContext).deleteRealmIfMigrationNeeded().build();

如何添加到资源文件夹我的项目数据库与数据并阅读?

解决方法

由于Realm Java 0.91.0在RealmConfiguration上有一个assetFile(String)选项,它会自动从资产中复制一个文件,如果需要,可以使用该文件(例如,如果域首次被打开或由于某种原因被删除):
RealmConfiguration config = new RealmConfiguration.Builder()
  .assetFile("path/to/file/in/assets") // e.g "default.realm" or "lib/data.realm"
  .deleteRealmIfMigrationNeeded()
  .build()

上述将在首次打开领域时复制文件,或者由于迁移而被删除(请记住在这种情况下更新资产领域).

旧答案:

可以在资源文件夹中捆绑一个Realm数据库,但是当您第一次启动应用程序时,您只需要从中复制.

我们举例说明如何在这里复制文件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,bytesRead);
        }
        outputStream.close();
        return file.getAbsolutePath();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

猜你在找的Android相关文章