1. 程式人生 > >將assets目錄下的資料庫檔案拷貝到當前應用程式下的files目錄下,並載入使用

將assets目錄下的資料庫檔案拷貝到當前應用程式下的files目錄下,並載入使用

將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);