java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了 java 加载 properties 文件的六种方法总结的相关资料, 需要的朋友可以参考下
java 加载 properties 文件的六种方法总结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
输出结果:
来源: http://www.phperz.com/article/18/0106/357009.html