JAVA讀取屬性文件的幾種方法
示例:
Java代碼
InputStream in = lnew BufferedInputStream(new FileInputStream(name));
Properties p = new Properties();
p.load(in);
Java代碼
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());
示例:
Java代碼
InputStream in = new BufferedInputStream(new FileInputStream(name));
ResourceBundle rb = new PropertyResourceBundle(in);
示例:
Java代碼
InputStream in = JProperties.class.getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
Java代碼
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name);
Properties p = new Properties();
p.load(in);
示例:
Java代碼
InputStream in = ClassLoader.getSystemResourceAsStream(name);
Properties p = new Properties();
p.load(in);
7.使用apache的PropertiesConfiguration類
示例:
Java代碼
Configuration config = new PropertiesConfiguration("test.properties");
config.getProperty(key);
補充
Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法
示例:
Java代碼
InputStream in = context.getResourceAsStream(path);
Properties p = new Properties();
p.load(in);
其中name為properties文件名字.但我在網上發現有人說要寫properties文件的絕對路徑,否則測試 不 能通過.我沒驗證過,有興趣的朋友可以試試.
就我個人而言我是比較偏向用第3方法.我在網上找到一篇介紹的更為詳細的文章,全文如下:
在設計時,我們往往需要訪問一些適合本地修改的配置信息,如果作為靜態變量,那么每次修改都需要重新編譯一個class,.config保存此類信息并不適合,這時我們需要ResourceBundle。
通過ResourceBundle,我們需要訪問位于/WEB-INF/classes目錄下的一個后綴名為properties的文本類型文件,從里面讀取我們需要的值。
Java代碼
Locale locale = Locale.getDefault();
ResourceBundle localResource = ResourceBundle.getBundle("ConnResource", locale);
String value = localResource.getString("test");
System.out.println("ResourceBundle: " + value);
這里對應了/WEB-INF/class/ConnResource.properties文件內容為:
test=hello world
打印出來的結果就是hello world
請注意,這里我們可以利用Locale和ResourceBundle的這個組合創建國際化的java程序。我們可以把locale實例化為
Java代碼
new Locale("zh","CN");
通過
Java代碼
ResourceBundle.getBundle("MessagesBundle", locale);
系統將自動尋找MessagesBundle_zh_CN,即定義為中國大陸地區簡體中文。如果沒有該文件,則會依次尋找MessagesBundle_zh,MessagesBundle,直到找到為止。