Androidstudio中Asset的建立和引用
阿新 • • 發佈:2019-01-23
一、建立:
右擊app->new->Folder->Assets Folder.
這樣就在main資料夾下建立了一個和res資料夾同級的assets檔案夾了:
二、使用:
1.載入assets目錄下的網頁
//載入assets/win8_Demo/目錄下的index.html網頁
webView.loadUrl(”file:///android_asset/win8_Demo/index.html”);
說明:這種方式可以載入assets目錄下的網頁,並且與網頁有關的css,js,圖片等檔案也會載入。
2.訪問assets目錄下的資原始檔:
// 讀取Assets資料夾下對應檔案的輸入流 InputStream is = getAssets().open("asset_test.txt"); // 讀取Assets資料夾下mysw資料夾內對應檔案的輸入流 InputStream is2 = getAssets().open("mysw/asset_test.txt");
3.獲取assets的檔案及目錄名
String fileNames[] =context.getAssets().list(path);
4.將assets下的檔案複製到SD卡
/** * 從assets目錄中複製整個資料夾內容 * @param context Context 使用CopyFiles類的Activity * @param oldPath String 原檔案路徑 如:/aa * @param newPath String 複製後路徑 如:xx:/bb/cc */ 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); } } 該方法呼叫時的程式碼:music為assets目錄下面的資料夾,裡面包括具體的檔案 copyFilesFassets(this, "music", "sdcard/clock");