2017-02-17 9 views
0

У меня возникла ситуация, когда я предлагаю пользователю создавать резервные копии своих сообщений или нет с помощью службы резервного копирования Google. Я успешно создаю резервную копию текущей базы данных области на SD-карте, откуда произойдет резервное копирование в службу Google. Но все же я рассказываю о сценарии, когда я хочу фактически восстановить базу данных с SD-карты до текущего экземпляра Realm, что означает замену текущего файла области с тем, который доступен на SD-карте.Восстановить Realm DB с SD-карты/внешнего хранилища Android

В старых версиях я видел, что Realm дал возможность указать собственный путь, из которого область будет читать файл базы данных, но в этом новом я его не вижу.

Любая помощь пожалуйста?

ответ

1

создать копию

public void backup() { 
    try { 
     // create a backup file 
     File exportRealmFile; 
     exportRealmFile = new File(EXPORT_REALM_PATH, EXPORT_REALM_FILE_NAME); 

     // if backup file already exists, delete it 
     exportRealmFile.delete(); 

     // copy current realm to backup file 
     realm.writeCopyTo(exportRealmFile); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    realm.close(); 
} 

ВОССТАНОВЛЕНИЕ

private String copyBundledRealmFile(String oldFilePath, String outFileName) { 
    try { 
     File file = new File(activity.getApplicationContext().getFilesDir(), outFileName); 

     FileOutputStream outputStream = new FileOutputStream(file); 

     FileInputStream inputStream = new FileInputStream(new File(oldFilePath)); 

     byte[] buf = new byte[1024]; 
     int bytesRead; 
     while ((bytesRead = inputStream.read(buf)) > 0) { 
      outputStream.write(buf, 0, bytesRead); 
     } 
     outputStream.close(); 
     return file.getAbsolutePath(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return null; 
} 

Надежда эта помощь.

Кредит link

Смежные вопросы