第一種辦法
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里。就可以使用這樣的語句來獲得一些屬性
【需要注意的地方:】
1.ResourceBundle.getBundle(String arg0)中的參數arg0必須包含屬性文件的完整路徑。
2.將屬性文件(例如config.properties)和讀取文件在一起;
屬性文件和讀取的文件要放在一起,如果要分開這兩個文件呢?那么我們自己可以自己建立一個目錄,將屬性文件放到其下,再將該目錄設置為classloader加載的目錄(加入類路徑中)則可,如下:
1、在項目下建一文件夾,路徑隨意,名字任意(這為:properties)。
2、(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文件的內容。