1. 程式人生 > >Androidstudio中Asset的建立和引用

Androidstudio中Asset的建立和引用

一、建立:

右擊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");