通常我使用领域:
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; }