在很多時候,我們需要訪問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下的文件都是隻能讀不能寫的哦。