java加載properties文件的六種方法總結(jié)
java加載properties文件的六種方法總結(jié)
java加載properties文件的六中基本方式實(shí)現(xiàn)
java加載properties文件的方式主要分為兩大類(lèi):一種是通過(guò)import java.util.Properties類(lèi)中的load(InputStream in)方法加載;
另一種是通過(guò)import java.util.ResourceBundle類(lèi)的getBundle(String baseName)方法加載。
注意:一定要區(qū)分路徑格式
實(shí)現(xiàn)代碼如下:
package com.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;
public class PropertiesUtil {
private static String basePath = "src/prop.properties";
private static String name = "";
private static String nickname = "";
private static String password = "";
/**
* 一、 使用java.util.Properties類(lèi)的load(InputStream in)方法加載properties文件
*
*/
public static String getName1() {
try {
Properties prop = new Properties();
InputStream is = new FileInputStream(basePath);
prop.load(is);
name = prop.getProperty("username");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return name;
}
/**
* 二、 使用class變量的getResourceAsStream()方法
* 注意:getResourceAsStream()讀取路徑是與本類(lèi)的同一包下
*
*/
public static String getName2() {
Properties prop = new Properties();
InputStream is = PropertiesUtil.class
.getResourceAsStream("/com/util/prop.properties");
try {
prop.load(is);
name = prop.getProperty("username");
} catch (IOException e) {
e.printStackTrace();
}
return name;
}
/**
* 三、
* 使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法
* getResourceAsStream(name)方法的參數(shù)必須是包路徑+文件名+.后綴 否則會(huì)報(bào)空指針異常
*
*/
public static String getName3() {
Properties prop = new Properties();
InputStream is = PropertiesUtil.class.getClassLoader()
.getResourceAsStream("com/util/prop.properties");
try {
prop.load(is);
} catch (IOException e) {
e.printStackTrace();
}
return name;
}
/**
* 四、 使用java.lang.ClassLoader類(lèi)的getSystemResourceAsStream()靜態(tài)方法
* getSystemResourceAsStream()方法的參數(shù)格式也是有固定要求的
*
*/
public static String getName4() {
Properties prop = new Properties();
InputStream is = ClassLoader
.getSystemResourceAsStream("com/util/prop.properties");
try {
prop.load(is);
name = prop.getProperty("username");
} catch (IOException e) {
e.printStackTrace();
}
return name;
}
/**
* 五、 使用java.util.ResourceBundle類(lèi)的getBundle()方法
* 注意:這個(gè)getBundle()方法的參數(shù)只能寫(xiě)成包路徑+properties文件名,否則將拋異常
*
*/
public static String getName5() {
ResourceBundle rb = ResourceBundle.getBundle("com/util/prop");
password = rb.getString("password");
return password;
}
/**
* 六、 使用java.util.PropertyResourceBundle類(lèi)的構(gòu)造函數(shù)
*
*/
public static String getName6() {
try {
InputStream is = new FileInputStream(basePath);
ResourceBundle rb = new PropertyResourceBundle(is);
nickname = rb.getString("nickname");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return nickname;
}
/**
* 測(cè)試
*
*/
public static void main(String[] args) {
System.out.println("name1:" + PropertiesUtil.getName1());
System.out.println("name2:" + PropertiesUtil.getName2());
System.out.println("name3:" + PropertiesUtil.getName3());
System.out.println("name4:" + PropertiesUtil.getName4());
System.out.println("password:" + PropertiesUtil.getName5());
System.out.println("nickname:" + PropertiesUtil.getName6());
}
}
文件路徑:

prop.properties文件:
1 username=mamama 2 nickname=xiaoma 3 password=123456
輸出結(jié)果:

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
SpringDataJpa的@Query注解報(bào)錯(cuò)的解決
這篇文章主要介紹了SpringDataJpa的@Query注解報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
詳解Java的Struts框架中上傳文件和客戶(hù)端驗(yàn)證的實(shí)現(xiàn)
這篇文章主要介紹了Java的Struts框架中上傳文件和客戶(hù)端驗(yàn)證的實(shí)現(xiàn),Struts是Java的SSH三大web開(kāi)發(fā)框架之一,需要的朋友可以參考下2015-12-12
手把手教你用Java給暗戀對(duì)象發(fā)送一份表白郵件
隨著我們學(xué)習(xí)java的深入,也漸漸發(fā)現(xiàn)了它的一些樂(lè)趣,比如發(fā)送郵件,下面這篇文章主要給大家介紹了關(guān)于如何利用Java給暗戀對(duì)象發(fā)送一份表白郵件的相關(guān)資料,需要的朋友可以參考下2021-11-11
JavaWeb登錄界面登錄失敗在同一頁(yè)面進(jìn)行提示的解決
這篇文章主要介紹了JavaWeb登錄界面登錄失敗在同一頁(yè)面進(jìn)行提示的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
SpringBoot配置Https入門(mén)實(shí)踐
本文主要介紹了SpringBoot配置Https入門(mén)實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
關(guān)于Scanner中nextInt()、nextLine()等方法總結(jié)與問(wèn)題解決
這篇文章主要介紹了關(guān)于Scanner中nextInt()、nextLine()等方法總結(jié)與問(wèn)題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-11-11
logback?OutputStreamAppender高效日志輸出源碼解析
這篇文章主要介紹了為大家logback?OutputStreamAppender日志輸出效率提升示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
IntelliJ IDEA Tomcat控制臺(tái)中文亂碼問(wèn)題的四種解決方案
這篇文章主要給大家分享了4種方法完美解決IntelliJ IDEA Tomcat控制臺(tái)中文亂碼問(wèn)題,文中有詳細(xì)的圖文介紹,對(duì)我們的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-08-08

