[英]shipping Android app with a .realm file and use it as a default database
我的“ assets / default.realm ”文件夹中有一个default.realm文件,我无法将其设置为默认领域数据库
realm.getDefaultInstance();
src= new File("assets/default.realm");
dst=new File("/data/data/" + context.getPackageName() + "/files/");
if (!(realm.isEmpty())) {
Log.v("DB","already there!!");
} else {
try {
copyFile(src,dst);
} catch (IOException e) {
Log.v("DB","Wrong Path!");
}
}
void copyFile(File src, File dst) throws IOException {
FileChannel inChannel = new FileInputStream(src).getChannel();
FileChannel outChannel = new FileOutputStream(dst).getChannel();
try {
inChannel.transferTo(0, inChannel.size(), outChannel);
} finally {
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
}
}
但未能复制,请帮助
您可以将其添加到RealmConfiguration
,而不是手动复制Realm文件: https : RealmConfiguration
。上下文-java.lang.String-
您的Realm文件可能与您的类不同,并且将引发MigrationIsNeeded
异常。 在这种情况下,您将必须编写一个迁移步骤: https : //realm.io/docs/java/latest/#migrations
因此,您将得到类似以下内容的结果:
RealmMigration migration = new RealmMigration() {
@Override
public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
RealmSchema schema = realm.getSchema();
if (oldVersion == 0) {
schema.create("Person")
.addField("name", String.class)
.addField("age", int.class);
oldVersion++;
}
}
};
RealmConfiguration config = new RealmConfiguration.Builder(this)
.name(Realm.DEFAULT_REALM_NAME)
.migration(migration)
.assetFile(this,"Default.realm")
.schemaVersion(1)
.build();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.