2012-04-13 195 views
0

我有一個應用程序,我正在更新我的SQLite數據庫文件,但每次用戶卸載此應用程序時,都會刪除此db文件並在重新安裝時創建新的數據庫文件。我想在每次更新到Micro SD卡後複製這個db文件,以便在卸載後我可以訪問我的數據庫。將SQLite數據庫複製到存儲設備進行備份

目標每次當數據庫文件被更新

  1. 說text.db創建
  2. 當現在我想這個數據庫文件複製到micro SD卡
  3. 該數據庫文件的時間 複製(應用程序數據庫文件)被更新
  4. 現在複製並替換該數據庫文件到Micro SD卡

回答

1

須藤代碼複製次e數據庫到SD卡。要將其複製回來,只需顛倒流。

  public boolean copyDatabase() { 
      String SDCardPath = Environment.getExternalStorageDirectory().getAbsolutePath(); 
      // Create the directory if neccesary. 
      File directory = new File(SDCardPath + <PATH TO SD-CARD SAVE LOCATION>); 
      if (!directory.exists()) 
        directory.mkdir(); 


      // Close the database before trying to copy it 
      database.close(); 

      // Copy database to SD-card 
      try { 
        InputStream mInput = new FileInputStream(<PATH TO DATABASE ON PHONE>); 
        OutputStream mOutput = new FileOutputStream(SDCardPath + <PATH TO SD-CARD SAVE LOCATION>); 

        byte[] buffer = new byte[1024]; 
        int length; 
        while ((length = mInput.read(buffer)) > 0) { 
          mOutput.write(buffer, 0, length); 
        } 
        mOutput.flush(); 
        mOutput.close(); 
        mInput.close(); 
      } catch (Exception e) { 

      } 

      return database.open(); 
    }