我試圖將我的數據庫從內部存儲複製到外部,但它不復制數據庫。它只是創建一個新的空的sqlite文件。任何想法我實際上錯過了什麼?android將數據庫從內部複製到外部存儲返回空數據庫
這裏是我使用的是什麼:
public static void copyFile(String currentDBPath, String backupDBPath){
try {
File sd = Environment.getExternalStorageDirectory();
//File data = Environment.getDataDirectory();
if (sd.canWrite()) {
File currentDB = new File(currentDBPath);
File backupDB = new File(backupDBPath);
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();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
,並使用它像這樣:
File database = new File("/sdcard/Stam/Data/");
database.mkdirs();
RPCCommunicator.copyFile("/data/data/" + this.getPackageName()+ "/databases/stam_sys_tpl.sqlite","/sdcard/Stam/Data/system.sqlite");
所以用這個,它創造了system.sqlite,但它沒有任何的表是空的。我想要做的是將數據庫從當前目錄移動到新數據庫而不丟失任何數據。
任何想法,爲什麼它不能正常工作?
是你確定擴展名是.sqlite而不是.db? – 2012-01-31 11:46:29
我很確定 – 2012-01-31 11:47:39
通常最好不要假定外部存儲稱爲「/ sdcard」 - 總是使用Environment#getExternalStorageDirectory()。另外,不要手動構建數據庫文件的路徑,請使用Context#getDatabasePath(「stam_sys_tpl.sqlite」)。 – Jens 2012-01-31 12:41:36