如果有多个.db
文件,如何在SD卡上备份最新的SQLite数据库(在下面的屏幕截图中,我想获取11408102018000005)?
注意:
文件类型是动态的。因此图像上的最后一个数字在递增。
这是我还原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();
}
}
答案 0 :(得分:1)
您需要创建文件并传递要保存的数据库名称,如下所示:
File backupDB = new File(sd[1], DBHelper.DB_NAME);
希望它会起作用。
答案 1 :(得分:0)
您可以使用 File 的 listFiles
方法来获取目录中文件的数组,并对数组进行排序,以便最新的格式排在第一列表,然后使用数组的第一个元素。例如
File[] dirlist = sd.listFiles(); //<<<<<<<< gets the list of files