在Android中重放备份数据库

问题描述 投票:0回答:1

虽然我已经在互联网上寻找解决方案,但我不知道该怎么做。我想在 Android 中重播我的备份数据库。

目前,我正在创建数据库备份,如下所示:

    final File[] databases = new File(context.getFilesDir().getParentFile().getPath() + "/databases").listFiles();
    for (File databaseFile: databases) {
        File backupFile = new File(context.getExternalFilesDir(null), databaseFile.getName() + "-" + System.currentTimeMillis() + ".db");
        FileChannel inputChannel = null;
        FileChannel outputChannel = null;

        if(databaseFile.getName().startsWith("DATABASE")) {
            try {
                inputChannel = new FileInputStream(databaseFile.getAbsolutePath()).getChannel();
                outputChannel = new FileOutputStream(backupFile).getChannel();
                outputChannel.transferFrom(inputChannel, 0, inputChannel.size());
...

现在我想重播我的备份,因为我更换了手机,并且我需要新手机上的数据。

如果有人知道我该怎么做?

提前非常感谢您。

android sqlite
1个回答
0
投票

你基本上颠倒了这个过程。

  1. 确定备份文件的位置(也许使用文件选择器)。
  2. 删除现有文件(如果该文件所在位置通常位于数据库文件夹/目录中,可以使用上下文的 getDatabasePath 方法确定)
    1. 请注意,与数据库文件名同名但带有 -wal、-shm 或 -journal 前缀的文件也应删除。
  3. 将文件(-wal 和 -shm,如果存在且已备份)从其备份位置复制到应有的位置。
  • 请注意,您可以覆盖文件而不是删除文件,或者您可以重命名它/它们,然后留下预恢复数据库的副本。
  • 请注意,您可能希望在恢复后重新启动应用程序,这是处理清理可能访问旧数据库的所有活动的最简单方法。

更多信息请参阅如何在备份 Android 后恢复 Sqlite 数据库

© www.soinside.com 2019 - 2024. All rights reserved.