-1

我在资产中有sqlite文件,dbflow可以正确读取它,但在运行时我有时需要从互联网下载一个新的更新sqlite文件并将其放在sdcard中的某个文件夹中,因此如何通过sdcard中的这个sqlite文件更新dbflow数据库以删除数据所有表并将sdcard文件中的新数据添加到它们?

4

1 回答 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 回答