如何备份和;恢复Sqlite数据库,SD卡上的SharedPreferences - Android

时间:2015-01-28 04:43:50

标签: android sqlite android-backup-service

您正在开发一个应用程序,我将数据存储到Sqlite& SharedPrefrences。我从android文档学习他们说我们可以通过注册服务来做到这一点,但我认为这只适用于云存储,因为我想备份SD卡上的数据。我也寻找过FileBackHelper,但它没有给出任何清晰度。

请告诉哪个是实施它的最佳方式?

1 个答案:

答案 0 :(得分:5)

您可以将sqlite数据库复制到像这样的SD卡

private void exportDB(){
    File sd = Environment.getExternalStorageDirectory();
        File data = Environment.getDataDirectory();
       FileChannel source=null;
       FileChannel destination=null;
       String currentDBPath = "/data/"+ "com.your.package" +"/databases/"+db_name;
       String backupDBPath = SAMPLE_DB_NAME;
       File currentDB = new File(data, currentDBPath);
       File backupDB = new File(sd, backupDBPath);
       try {
            source = new FileInputStream(currentDB).getChannel();
            destination = new FileOutputStream(backupDB).getChannel();
            destination.transferFrom(source, 0, source.size());
            source.close();
            destination.close();
            Toast.makeText(this, "DB Exported!", Toast.LENGTH_LONG).show();
        } catch(IOException e) {
            e.printStackTrace();
        }
}

共享首选项文件位置主要由设备制造商选择,因此对任何共享首选项文件的硬编码路径都不好。