如何訪問android的asset目錄和res目錄下的檔案
在很多時候,我們需要訪問android中的資原始檔,這些資原始檔主要分為兩類,一種出於asset目錄下,稱為原生檔案,這類檔案在被打包成apk檔案時是不會進行壓縮的;另一類則是res下的檔案,這類檔案在打包成apk檔案時,會進行小記憶體優化的哦。
兩種不同型別的檔案,對應著不同的訪問模式。我們先來看看asset檔案的訪問:
android中有一個專門的類來處理應用對asset檔案的訪問,這個類就是AssetManager。其內有一個open()方法可以根據使用者提供的檔名,返回一個InputStream物件供使用者使用。
我們截圖看下api中的方法:
這裡我們可以看到open方法以及其他的相應方法,對於其中有一個引數accessMode,則指定了系統獲取資源的模式。主要值有以下幾種:
ACCESS_BUFFER :載入檔案到記憶體中,這種方式適合小檔案的讀取;
ACCESS_RANDOM:可以隨意的向前或者向後的讀取資料塊
ACCESS_STRAMING:順序的讀取內容
ACCESS_UNKNOWN:當沒有明確指定時,使用預設模式
這裡我們一定要注意,open(String fileName)預設的使用ACCESS_STREAMING模式進行讀取!!
那麼我們如何獲得一個AssetManager物件呢,在activity中我們可以通過以下的程式碼獲取:
AssetManager assetManager = this.getResources().getAsset();
-----------------------------------------------------------------------------------
如何訪問res目錄下的檔案呢?
我們再activity中可以通過如下方法進行訪問,InputStream inputStream = Resources.openRawResource(int id);
api中是這樣描述的:
最後,我們一定要注意,asset和res下的檔案都是隻能讀不能寫的哦。