我在资产中有sqlite文件,dbflow可以正确读取它,但在运行时我有时需要从互联网下载一个新的更新sqlite文件并将其放在sdcard中的某个文件夹中,因此如何通过sdcard中的这个sqlite文件更新dbflow数据库以删除数据所有表并将sdcard文件中的新数据添加到它们?
问问题
158 次
1 回答
0
试试下面的代码。这是我从卸载后恢复数据的应用程序中导入的备份。试试代码。希望它有效
注意:在运行时和清单中提供读写权限
private void importDB() {
try {
File sd = Environment.getExternalStorageDirectory();
File data = Environment.getDataDirectory();
if (sd.canWrite()) {
String currentDBPath = DOWNLOADEDDATAPATH; //SOURCE
String backupDBPath = "data/" + getContext().getPackageName() + "/databases/FILENAME"; //Destination
File backupDB = new File(sd, currentDBPath); //SOURCE
File currentDB = new File(data, backupDBPath); //Destination
FileChannel src = new FileInputStream(backupDB).getChannel(); //SOURCE
FileChannel dst = new FileOutputStream(currentDB).getChannel(); //Destination
dst.transferFrom(src, 0, src.size());
src.close();
dst.close();
}
} catch (Exception e) {
Log.d("test", e.toString());
}
}
于 2017-11-28T08:48:29.250 回答