1. 程式人生 > >android中讀取properties檔案

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



注意:其中工程路徑的根路徑為"/"