天天看點

assert檔案夾 設定android_android assert 目錄操作

預前知識: 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);     }                            }