Seit Realm Java 0.91.0 gibt es eine assetFile(String)
Option auf der RealmConfiguration
, die automatisch eine Datei aus Assets kopiert und diese bei Bedarf verwendet (zB wenn das Realm das erste Mal geöffnet wird oder aus irgendeinem Grund gelöscht wurde) :
RealmConfiguration config = new RealmConfiguration.Builder()
.assetFile("path/to/file/in/assets") // e.g "default.realm" or "lib/data.realm"
.deleteRealmIfMigrationNeeded()
.build()
über die die Datei von Vermögenswerten das erste Mal ist das Reich geöffnet kopiert oder wenn es zu Migrationen aufgrund gelöscht wurde (denken sie daran, den Vermögenswert Realm in diesem Fall zu aktualisieren).
ALTE ANTWORT:
Es ist möglich, eine Realm-Datenbank im Ordner Assets zu bündeln, aber dann müssen Sie nur es von dort kopieren, wenn der App zum ersten Mal starten.
Wir haben ein Beispiel dafür, wie die Dateien hier kopieren: 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;
}
vielleicht [diese] (https://github.com/realm/realm-java/blob/master/ Beispiele/migrationExample/src/main/java/io/realm/examples/realmigrationexample/MigrationExampleActivity.java # L56-L58) sollte aktualisiert werden, um 'assetFile()' zu verwenden – EpicPandaForce
Gute Idee. Erledigt. –
Schön zu sehen 'AssetFile()' hinzugefügt! Es wäre auch eine "Nur Kopie, wenn neuer" Option für das Szenario, in dem Realm schreibgeschützt verwendet wird (z. B. Produktkatalogszenario). Dies vermeidet eine unnötige Kopie, vereinfacht jedoch die Dinge.* (Ich würde gerne in Rente gehen: https://github.com/eggheadgames/android-realm-asset-helper!) * – mm2001