java加載properties文件的六中基本方式實現
java加載properties文件的方式主要分為兩大類:一種是通過import java.util.Properties類中的load(InputStream in)方法加載;
另一種是通過import java.util.ResourceBundle類的getBundle(String baseName)方法加載。
注意:一定要區分路徑格式
實現代碼如下:
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類的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()讀取路徑是與本類的同一包下 * */
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)方法的參數必須是包路徑+文件名+.后綴 否則會報空指針異常 * */
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類的getSystemResourceAsStream()靜態方法 * getSystemResourceAsStream()方法的參數格式也是有固定要求的 * */
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類的getBundle()方法 * 注意:這個getBundle()方法的參數只能寫成包路徑+properties文件名,否則將拋異常 * */
public static String getName5() { ResourceBundle rb = ResourceBundle.getBundle("com/util/prop"); password = rb.getString("password"); return password; } /** * 六、 使用java.util.PropertyResourceBundle類的構造函數 * */
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; } /** * 測試 * */
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文件:
username=mamama nickname=xiaoma password=123456
輸出結果: