預前知識: Android資源檔案分類: Android資源檔案大緻可以分為兩種: 第一種是res目錄下存放的可編譯的資源檔案: 這種資源檔案系統會在R.java裡面自動生成該資源檔案的ID,是以通路這種資源檔案比較簡單,通過R.XXX.ID即可; 第二種是assets目錄下存放的原生資源檔案: 因為系統在編譯的時候不會編譯assets下的資源檔案,是以我們不能通過R.XXX.ID的方式通路它們。那我麼能不能通過該資源的絕對路徑去通路它們呢?因為apk安裝之後會放在/data/app public void copyFilesFassets(Context context,String oldPath,String newPath) { try { String fileNames[] = context.getAssets().list(oldPath);//擷取assets目錄下的所有檔案及目錄名 if (fileNames.length > 0) {//如果是目錄 File file = new File(newPath); file.mkdirs();//如果檔案夾不存在,則遞歸 for (String fileName : fileNames) { copyFilesFassets(context,oldPath + "/" + fileName,newPath+"/"+fileName); } } else {//如果是檔案 InputStream is = context.getAssets().open(oldPath); FileOutputStream fos = new FileOutputStream(new File(newPath)); byte[] buffer = new byte[1024]; int byteCount=0; while((byteCount=is.read(buffer))!=-1) {//循環從輸入流讀取 buffer位元組 fos.write(buffer, 0, byteCount);//将讀取的輸入流寫入到輸出流 } fos.flush();//重新整理緩沖區 is.close(); fos.close(); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); //如果捕捉到錯誤則通知UI線程 MainActivity.handler.sendEmptyMessage(COPY_FALSE); } }