使用动态文件名获取SQLite数据库备份

时间:2018-08-16 02:21:47

标签: android sqlite

如果有多个.db文件,如何在SD卡上备份最新的SQLite数据库(在下面的屏幕截图中,我想获取11408102018000005)?

注意:

文件类型是动态的。因此图像上的最后一个数字在递增。

这是图像: enter image description here

这是我还原SQLite数据库时的代码。

private void restoreDB() {
    try {
        File[] sd = getContext().getExternalFilesDirs(null);

        if (sd[1].canWrite()) {
            File backupDB = new File(sd[1] + "/" + curControlNo);    //<--- what to put here. This is just a test path and name
            File currentDB = new File(getContext().getDatabasePath(DBHelper.DB_NAME).getPath());

            FileChannel src = new FileInputStream(backupDB).getChannel();
            FileChannel dst = new FileOutputStream(currentDB).getChannel();
            dst.transferFrom(src, 0, src.size());
            src.close();
            dst.close();
            Toast.makeText(getContext(), "Import Successful!", Toast.LENGTH_SHORT).show();
            openHome();
        }
    } catch (Throwable e) {
        Toast.makeText(getContext(), "Import Failed!", Toast.LENGTH_SHORT).show();
        e.printStackTrace();
    }
}

2 个答案:

答案 0 :(得分:1)

您需要创建文件并传递要保存的数据库名称,如下所示:

File backupDB = new File(sd[1], DBHelper.DB_NAME); 

希望它会起作用。

答案 1 :(得分:0)

您可以使用 File listFiles 方法来获取目录中文件的数组,并对数组进行排序,以便最新的格式排在第一列表,然后使用数组的第一个元素。例如

File[] dirlist = sd.listFiles(); //<<<<<<<< gets the list of files