Java中resourceBundle和Properties的區別

第一種辦法
InputStream is = Test.class.getResourceAsStream("DbConfig.properties");
Properties p = new Properties();
p.load(is);
System.out.println(p.get("jndi"));
Test.class要放在DbConfig.properties同一目錄??? 這句話須要待測試.
第二種辦法
private String BUNDLE_NAME = "com.newland.alarmquery.resource.DbConfig";///不要加上擴展名
ResourceBundle resource_bundle = ResourceBundle.getBundle(BUNDLE_NAME);
jndi=resource_bundle.getString("jndi");
System.out.println(p.get("jndi"));
通常來講,ResourceBundle類一般是用於針對不一樣的語言來使用的屬性文件。
而若是你的應用程序中的屬性文件只是一些配置,並非針對多國語言的目的。那麼使用Properties類就能夠了。
一般能夠把這些屬性文件放在某個jar文件中。而後,經過調用class的getResourceAsStream方法,來得到該屬性文件的流對象,再用Properties類的load方法來裝載。
有時候有些簡單的配置文件能夠不必使用xml,其實ResourceBundle類就已經作的很好的。它甚至能夠搜索到classpath裏的jar文件中一些properties文件。
例如在jar文件中的根目錄放置一個文件:DbConfig.properties,而後只要這個jar文件在classpath裏。就可使用這樣的語句來得到一些屬性java

【須要注意的地方:】
1.ResourceBundle.getBundle(String arg0)中的參數arg0必須包含屬性文件的完整路徑。
2.將屬性文件(例如config.properties)和讀取文件在一塊兒;
屬性文件和讀取的文件要放在一塊兒,若是要分開這兩個文件呢?那麼咱們本身能夠本身創建一個目錄,將屬性文件放到其下,再將該目錄設置爲classloader加載的目錄(加入類路徑中)則可,以下:
一、在項目下建一文件夾,路徑隨意,名字任意(這爲:properties)。
二、(Eclipse中)選擇項目->Properties->java Build Path->Libraries->Add
Class Folder,將properties文件加入類路徑便可(或者手動在.classpath文件中加入:<classpathentry kind="lib" path="properties"/>)。而後直接用
ResourceBundle.getBundle("config");則可讀取
properties/config.properties文件的內容。
3.resourceBundle.getBundle(args0)中傳入的參數爲資源文件的basename.且不用加.properties文件後綴。
如資源文件名爲:myres_zh_CN.properties或myres.properties則只須要傳入myres就能夠 了。
4.ResourceBundle這個類的做用就是讀取資源屬性文件(properties),而後根據.properties文件的名稱信息(本地化信息),匹配當前系統的國別語言信息(也能夠程序指定),而後獲取相應的properties文件的內容。
測試

相關文章
相關標籤/搜索