android中讀取properties檔案
java中經常用到properties檔案,然後通過使用Properties類來解析,這裡不再陳述使用properties檔案的好處,主要探討如何在android中使用properties檔案!
方法一:context.getAssets()
因為最終是通過流檔案來進行properties檔案讀取的,所以很自然,我們想到要將檔案放入到assets資料夾或者raw資料夾中了。
例如,我們這裡有一個檔案——>test.properties,如果放入了/app/src/main/assets資料夾中,可以如下開啟
Java程式碼
Properties pro = new Properties(); InputStream is = context.getAssets().open("test.properties"); pro.load(is);
如果放入到/app/src/main/res/raw資料夾中,可以通過如下方式開啟
InputStream is = context.getResources().openRawResource(R.raw.test);
但是,有的時候我們不想獲取android的上下文環境(context),而是像java中標準的方法載入properties檔案,那麼我們如何使用呢?請看
方法二:FileLoad.class.getResourceAsStream 沒有上下文的載入![推薦方式]
Java程式碼
Properties pro = new Properties(); pro.load(FileLoad.class.getResourceAsStream("test.properties"));
如果要讀取android系統中的properties檔案。則通過
File propertyFlie = new File(filepath);比如“/cache”
inputStream = new FileInputStream(propertyFlie);
properties.load(inputStream);
其中,FileLoad是該載入方法所在類的類名。test.properties所存放的路徑與FileLoad.java為同一包中。
但是,在android中,當我們打包生成apk後,將apk放入到真正的手機上時,你會找不到test.properties檔案,不要驚訝,android中的資原始檔是隻能存放在assets或者res的子目錄裡面的,程式包中的資原始檔編譯後,是會丟失的!那麼是不是我們的第二種方法就沒法使用了? 當然不是,經過實驗發現,將檔案放入到assets資料夾裡,而在傳入路徑裡面填入檔案絕對路徑,還是可以引用該檔案的。
Java程式碼
pro.load(FileLoad.class.getResourceAsStream("/assets/test.properties"));
注意:其中工程路徑的根路徑為"/"