【问题标题】:How to backup & restore SqliteDatabase,SharedPreferences on SD-Card - Android [duplicate]如何在 SD 卡上备份和恢复 SqliteDatabase、SharedPreferences - Android [重复]
【发布时间】:2015-01-28 04:43:49
【问题描述】:

您好,我正在开发一个应用程序,其中我将数据存储到 SqliteSharedPrefrences。我从 android 文档中研究过,他们说我们可以通过注册服务来做到这一点,但我认为这仅适用于云存储,因为我想在 SD 卡上备份数据。我也找过 FileBackHelper,但没有给出任何明确的说明。

请告诉哪个是最好的实现方式?

【问题讨论】:

标签: android sqlite android-backup-service


【解决方案1】:

您可以像这样将您的 sqlite db 复制到 sdcard

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();
        }
}

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

【讨论】:

  • 谢谢先生,但是如何恢复呢?
  • exportDB();的机制倒过来就行了
  • 好的,谢谢,我需要成为设备的根才能复制 db 文件吗?
  • 没有。随心所欲。大多数人在 SD 卡中这样做
  • 谢谢。我猜所有设备的 adnroid sqlite & sharedprefences 路径都保持不变。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-07
  • 2011-01-11
  • 1970-01-01
  • 2019-01-17
  • 2011-07-14
  • 2022-01-11
  • 1970-01-01
相关资源
最近更新 更多