2016-09-29 34 views

答えて

1

Googleドライブ、ドロップボックス、1台のドライブなど、dbファイルのバックアップと復元に使用できるいくつかのタイプがあります。あなたのローカルストレージからバックアップをしたい場合は、下記のコードを試してください。

バックアップコード:

public void backUp() { 
    try { 
     File sd = Environment.getExternalStorageDirectory(); 
     File data = Environment.getDataDirectory(); 

     if (sd.canWrite()) { 
      String currentDBPath = "//data//your package  name//databases//dbname.db"; 
      String backupDBPath = "dbname.db"; 

      File currentDB = new File(data, currentDBPath); 
      File backupDB = new File(sd, backupDBPath); 

      Log.d("backupDB path", "" + backupDB.getAbsolutePath()); 

      if (currentDB.exists()) { 
       FileChannel src = new  FileInputStream(currentDB).getChannel(); 
       FileChannel dst = new FileOutputStream(backupDB).getChannel(); 
       dst.transferFrom(src, 0, src.size()); 
       src.close(); 
       dst.close(); 
       Toast.makeText(getApplicationContext(), "Backup is successful to SD card", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

復元コード:

public void restore() { 
    try { 
     File sd = Environment.getExternalStorageDirectory(); 
     File data = Environment.getDataDirectory(); 

     if (sd.canWrite()) { 
      String currentDBPath = "//data//your package name//databases//dbname.db";; 
      String backupDBPath = "dbname.db"; 
      File currentDB = new File(data, currentDBPath); 
      File backupDB = new File(sd, backupDBPath); 

      if (currentDB.exists()) { 
       FileChannel src = new FileInputStream(backupDB).getChannel(); 
       FileChannel dst = new FileOutputStream(currentDB).getChannel(); 
       dst.transferFrom(src, 0, src.size()); 
       src.close(); 
       dst.close(); 
       Toast.makeText(getApplicationContext(), "Database Restored successfully", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
}