要导出我的领域文件我正在使用下一个代码:
File exportRealmFile;
exportRealmFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "default.realm");
getRealm().writeCopyTo(exportRealmFile);
之后我试图导入这个文件。我打开Android Monitor并将文件推送到另一台设备上。
但是当我想获得RealmObject时,例如,StatObject我看到对象大小是0.但我知道大小不是0.
RealmResults<StatObject> statObjects =
realmForThisThread.where(StatObject.class).findAll();
LOG.debug("Size "+statObjects.size());
我打开Stetho,我看不到任何物体!但在出口之前,我看到了七个不同的领域对象。但是,库本身具有相同的大小。我做错了什么?
我正在尝试使用以下方法导入realm文件:
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder()
.name("Realmexport.realm")
.assetFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath())
.build();
// Realm.setDefaultConfiguration(realmConfiguration);
但没有改变。
导入文件:
File oldRealmFile = new File(getRealm().getPath());
File newFile = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM) ,"default.realm");
FileOutputStream outputStream=null;
FileInputStream inputStream=null;
try {
outputStream = new FileOutputStream(oldRealmFile);
inputStream = new FileInputStream(newFile);
byte[] buf = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buf)) > 0) {
outputStream.write(buf, 0, bytesRead);
}
outputStream.close();
inputStream.close();
}catch (IOException exc){
exc.printStackTrace();
}finally {
}
这种方法有助于导入文件,但新文件我无法使用它。因为我没有看到我的物体。
答案 0 :(得分:1)
您以错误的方式使用assetFile
。您引用了内部设备位置.assetFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath())
,而导出的Realm应位于APK的assets
文件夹中。同时指定name
将创建一个新的(空)Realm。
请尝试以下配置。
RealmConfiguration config = new RealmConfiguration.Builder().assetFile("myExported").build();
你的APK:
└── src
└── main
├── AndroidManifest.xml
├── assets
│ └── myExported.realm
├── java
└── res
答案 1 :(得分:0)
.assetFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath())
应该是
.directory(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM))