Java加载properties文件实现方式详解

时间:2021-05-20

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

输出结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章