AndroidStudio使用properties資源文件


在Android項目開發中,為了一些公用資源使用方便,可以在assets資源文件夾中將需要用到的資源寫成.properties或者.json的文件形式,並進行讀取使用。在做html5+javascript+android的混合開發中,一般html5和javascript以及相關資源可以存放在Assets文件夾內,因此assets的使用十分必要。


由於AndroidStudio與Eclipse不同,項目中默認沒有assets文件夾,因此首先需要在工程目錄下添加assets文件夾,具體位置在:src/main/assets。這個位置可以通過XXX.iml 設置assets的目錄( XXX代表項目名),設置如下:<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> 

也可以通過AndroidStudio自動添加,步驟如下:

1. 在app項目欄上用鼠標右鍵打開選擇菜單,點選New,在下級菜單中選擇Folder,再下級菜單中選擇Assets Folder




這樣,assets文件夾就創建好了。


接下來為大家介紹一下properties文件的讀取。

AndroidStudio讀取.properties配置文件在實際的開發中使用的很多,總結了一下,常用的有以下兩種方法:

一、通過jdk提供的java.util.Properties類。

此類繼承自java.util.HashTable,即實現了Map接口,所以,可使用相應的方法來操作屬性文件,但不建議使用像put、putAll這兩個方法,因為put方法不僅允許存入String類型的value,還可以存入Object類型的。因此java.util.Properties類提供了getProperty()和setProperty()方法來操作屬性文件,同時使用store或save(已過時)來保存屬性值(把屬性值寫入.properties配置文件)。在使用之前,還需要加載屬性文件,它提供了兩個方法:load和loadFromXML。

load有兩個方法的重載:load(InputStream inStream)、load(Reader reader),所以,可根據不同的方式來加載屬性文件。

可根據不同的方式來獲取InputStream,如:

1、通過當前類加載器的getResourceAsStream方法獲取

InputStream inStream = TestProperties.class.getClassLoader().getResourceAsStream("test.properties"); 

2、從文件方式獲取

InputStream inStream = new FileInputStream(new File("filePath")); 

3、通過類加載器獲取

InputStream in = ClassLoader.getSystemResourceAsStream("filePath");

4、在servlet中,可以通過context獲取

InputStream in = context.getResourceAsStream("filePath"); 

5、通過url獲取

URL url = new URL("path");

InputStream inStream = url.openStream(); 

接下來就是具體內容的讀取了:

Properties prop = new Properties();  

prop.load(inStream);  

String key = prop.getProperty("username");  

//String key = (String) prop.get("username"); 

二、通過java.util.ResourceBundle類來讀取,這種方式比使用Properties要方便一些。

1、通過ResourceBundle.getBundle()靜態方法來獲取(ResourceBundle是一個抽象類),這種方式來獲取properties屬性文件不需要加.properties后綴名,只需要文件名即可。

ResourceBundle resource = ResourceBundle.getBundle("com/mmq/test");//test為屬性文件名,放在包com.mmq下,如果是放在src下,直接用test即可  
String key = resource.getString("username"); 

2、從inputstream中獲取內容,根據第一種方法中的獲取到instream后

ResourceBundle resource = new PropertyResourceBundle(inStream);

然后就可以獲取具體內容了。

注意:在使用中遇到的最大的問題可能是配置文件的路徑問題,如果配置文件入在當前類所在的包下,那么需要使用包名限定,如:test.properties入在com.mmq包下,則要使用com/mmq/test.properties(通過Properties來獲取)或com/mmq/test(通過ResourceBundle來獲取);屬性文件在src根目錄下,則直接使用test.properties或test即可。

在本介紹中,我們把.properties文件放在src/main/assets路徑下,獲取方法:

 
        

   
   
  
  
          
  1. public static Properties loadProperties(Context context) {
  2. Properties properties = new Properties();
  3. try {
  4. InputStream in = context.getAssets().open( "test.properties");
  5. properties.load( in);
  6. in.close();
  7. }
  8. catch (IOException e) {
  9. e.printStackTrace();
  10. return null;
  11. }
  12. return properties;
  13. }



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM