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

 更新时间:2020年07月27日 10:45:28   作者:黑仔002  
这篇文章主要介绍了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

输出结果:

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

相关文章

  • JavaWeb中Servlet的深入理解

    JavaWeb中Servlet的深入理解

    Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层
    2021-10-10
  • Java使用动态规划算法思想解决背包问题

    Java使用动态规划算法思想解决背包问题

    背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高
    2022-04-04
  • spring boot 图片上传与显示功能实例详解

    spring boot 图片上传与显示功能实例详解

    这篇文章主要介绍了spring boot 图片上传与显示功能实例详解,需要的朋友可以参考下
    2017-04-04
  • SpringBoot3+ShardingJDBC5.5.0 读写分离配置的实现

    SpringBoot3+ShardingJDBC5.5.0 读写分离配置的实现

    本文主要介绍了SpringBoot3+ShardingJDBC5.5.0 读写分离配置的实现,最新版5.5.0支持SpringBoot3x现分享给大家,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • java中ImageReader和BufferedImage获取图片尺寸实例

    java中ImageReader和BufferedImage获取图片尺寸实例

    这篇文章主要介绍了java中ImageReader和BufferedImage获取图片尺寸实例,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Java实现天天酷跑小游戏完整代码(附源码)

    Java实现天天酷跑小游戏完整代码(附源码)

    这篇文章主要介绍了使用Java实现天天酷跑(附源码),本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • SpringBoot中Dozer的使用小结

    SpringBoot中Dozer的使用小结

    dozer是用来两个对象之间属性转换的工具,有了这个工具之后,我们将一个对象的所有属性值转给另一个对象时,就不需要再去写重复的set和get方法了,下面介绍下SpringBoot中Dozer的使用,感兴趣的朋友一起看看吧
    2022-03-03
  • spring之SpEL表达式详解

    spring之SpEL表达式详解

    这篇文章主要介绍了spring之SpEL表达式详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Spring boot多线程配置方法

    Spring boot多线程配置方法

    这篇文章主要为大家详细介绍了Spring boot多线程配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Java线程池由浅入深掌握到精通

    Java线程池由浅入深掌握到精通

    什么是线程池?很简单,简单看名字就知道是装有线程的池子,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程的复用
    2021-09-09

最新评论