將assets目錄下的資料庫檔案拷貝到當前應用程式下的files目錄下,並載入使用
阿新 • • 發佈:2019-02-08
將assets目錄下的資料庫檔案拷貝到當前應用程式下的files目錄下
/** * 將assets資產目錄下的檔案拷貝到系統目錄下 */ private void copyAssetsDB() { final File file = new File(getFilesDir(),"address.db");//getFilesDir()方法用於獲取/data/data//files目錄 System.out.println("檔案路徑---->"+getFilesDir()); if(file.exists()){//檔案存在了就不需要拷貝了 System.out.println("資料庫檔案已經存在,不需要再拷貝"); return; } new Thread(){ public void run() { System.out.println("進行資料庫檔案拷貝"); try { //獲取資產目錄管理器 AssetManager assetManager = getAssets(); InputStream is = assetManager.open("address.db");//輸入流 FileOutputStream fos = new FileOutputStream(file);//輸出流 byte[] buffer = new byte[1024]; int len = 0; while((len=is.read(buffer))!=-1){ fos.write(buffer,0,len); } fos.close(); is.close(); } catch (Exception e) { e.printStackTrace(); } }; }.start(); }
載入資料庫檔案
/**
* 第一個引數:拷貝後的資料庫路徑
* 第二個引數:遊標工廠
* 第三個引數:資料庫訪問模式
*/
SQLiteDatabase db = SQLiteDatabase.openDatabase(context.getFilesDir().getAbsolutePath()+"/address.db", null, SQLiteDatabase.OPEN_READONLY);