2012-06-04 43 views
1

我正在複製我的數據庫文件到SD卡車使用這種方法,請告訴我,如果在SD卡的文件已經存在,那麼它會替換還是不會複製?此代碼是否會用新文件替換現有數據庫文件?

public boolean copyDbToSDCard() { 
     boolean success = false; 
     String SDCardPath = Environment.getExternalStorageDirectory() 
       .getAbsolutePath(); 
     final String DBPATH = SDCardPath + "/BD/"; 
     final String DBNAME = "Mydb3.db"; 
     this.getReadableDatabase(); 
     File directory = new File(DBPATH); 
     if (!directory.exists()) 
      directory.mkdir(); 
     close(); 

     try { 
      InputStream mInput = new FileInputStream(DB_PATH + DB_NAME); 
      OutputStream mOutput = new FileOutputStream(DBPATH + DBNAME); 
      byte[] buffer = new byte[1024]; 
      int length; 
      while ((length = mInput.read(buffer)) > 0) { 
       mOutput.write(buffer, 0, length); 
      } 
      mOutput.flush(); 
      mOutput.close(); 
      mInput.close(); 
      success = true; 
     } catch (Exception e) { 
      Toast.makeText(myContext, 
        "copyDbToSDCard Error : " + e.getMessage(), 
        Toast.LENGTH_SHORT).show(); 
      e.fillInStackTrace(); 
     } 
     return success; 
    } 
+4

如何測試你的代碼inst問問它是否有效?這幾乎是方式更快,不會浪費我們的時間 – WarrenFaith

+0

我不能在地面上測試 – Trikaldarshi

+0

「地面」是什麼意思? – WarrenFaith

回答

1

您可以檢查數據庫是否可用?

這樣

checkDB() 
{ 
try{ 
     SQLiteDatabase dbe = SQLiteDatabase.openDatabase("selectedFilePath", null,0); 
     Log.d("opendb","EXIST"); 
     dbe.close(); 
     // DB exits then delete 
     File file = new File(selectedFilePath); 
     boolean deleted = file.delete(); <--- this will help you to delete DB 

    } 
    catch(Exception e) 
    { 
     // DB not exits code to copy database 
    } 
} 
+0

我只想替換 – Trikaldarshi

+0

,我的目標是SD卡不是數據數據包dbname – Trikaldarshi

+0

請參閱編輯答案。 – MAC

1

代碼:

OutputStream mOutput = new FileOutputStream(DBPATH + DBNAME); 

mOutput.write(buffer, 0, length); 

使得如果文件存在,它將替換文件與新的數據

內容
+1

我剛剛測試過類似的代碼,並且文件被新內容覆蓋 – magodiez

+0

如果要通過附加文件FileOutputStream,你必須在構造函數中明確地告訴它:new FileOutputStream(file,true); – Matt

+0

是的,這會將新數據附加到現有文件 – Trikaldarshi

相關問題