读取resources目录下properties文件的三种方式

AI炼丹童子
• 阅读 724

在开发过程中常常会需要读取resources目录下的配置文件,大部分是框架帮我们自动读取,如果我们手动读取该如何读取呢?

以下是个人总结的读取properties文件的三种方式:

基于InputStream读取配置文件
通过Spring中的PropertiesLoaderUtils工具类进行获取
通过 java.util.ResourceBundle 类读取

准备工作:

创建maven项目properties_read
在reaources目录下创建data.properties,数据如下:

[XML] 纯文本查看 复制代码
?

<dependencies>

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>RELEASE</version>
</dependency>
<!--IOC相关依赖-->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.6.RELEASE</version>
</dependency>

</dependencies>

读取方式一:

基于InputStream读取配置文件
[Java] 纯文本查看 复制代码
?

/**

  • 基于InputStream读取配置文件

*/
public class PropertiesTest1 {

private InputStream is;

@Test
public void proRead(){

    try {
        //创建Properties对象
        Properties pro = new Properties();

        is = PropertiesTest1.class.getResourceAsStream("/data.properties");
        //处理中文乱码


        pro.load(is);

        Set<Map.Entry<Object, Object>> entries = pro.entrySet();
        for (Map.Entry<Object, Object> entry : entries) {

            String value =(String)entry.getValue();
            value = URLEncoder.encode(value, "ISO-8859-1");
            value = URLDecoder.decode(value, "GBK");

            System.out.println(entry.getKey()+"------"+value);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

读取方式二:

通过Spring中的PropertiesLoaderUtils工具类进行获取
[Java] 纯文本查看 复制代码
?

/**

  • 通过Spring中的PropertiesLoaderUtils工具类进行获取

*/
public class PropertiesTest2 {

@Test
public void proRead(){

    try {
        Properties pro = PropertiesLoaderUtils.loadAllProperties("data.properties");


        Set<Map.Entry<Object, Object>> entries = pro.entrySet();

        for (Map.Entry<Object, Object> entry : entries) {

            String value =(String)entry.getValue();
            value = URLEncoder.encode(value, "ISO-8859-1");
            value = URLDecoder.decode(value, "GBK");

            System.out.println(entry.getKey()+"------"+value);
        }


    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

读取方式三:

通过 java.util.ResourceBundle 类读取
[Java] 纯文本查看 复制代码
?

/**

  • 通过 java.util.ResourceBundle 类读取

*/
public class PropertiesTest3 {

@Test
public void proRead(){

    ResourceBundle resourceBundle = ResourceBundle.getBundle("data");
    //遍历取值
    Enumeration enumeration = resourceBundle.getKeys();
    while (enumeration.hasMoreElements()) {
        try {
            String key = (String) enumeration.nextElement();
            String value = resourceBundle.getString(key);

            value = URLEncoder.encode(value, "ISO-8859-1");
            value = URLDecoder.decode(value, "GBK");

            System.out.println(key+"------"+value);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

}

}

总结:
第一种读取方式不需要引入第三方jar包,读取起来也很好理解。
第二种方式需要引入Spring的核心依赖包,代码比较简单。
第三种作为了解内容
properties文件的编码方式是GBK,我们读取文件的编码是ISO-8859-1,我们需要逆向编解码来处理乱码问题

点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
4年前
java读取properties文件总结
一、java读取properties文件总结在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getRe
Wesley13 Wesley13
4年前
java读取自定义的.properties 配置文件 中的key
  /读取.properties配置文件@parampropertiesUrl配置文件的路径@return配置文件中的keyvalue值/publicstaticMap<String,StringgetPrope
Easter79 Easter79
4年前
spring通过注解@Value获取properties配置
在springmvc中,想通过注解读取\.properties文件的值,可以采用以下方式一.在springmvc.xml配置文件中配置<!加载配置文件<context:propertyplaceholderlocation"classpath:properties/.properties"/二.在相应
Wesley13 Wesley13
4年前
Java项目读取resources资源文件路径那点事
  今天在Java程序中读取resources资源下的文件,由于对Java结构了解不透彻,遇到很多坑。正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径。在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例: !(https://oscimg.oschina.net/o
Wesley13 Wesley13
4年前
Java Properties配置文件和XML配置文件读取
一、properties类读取配置文件1、从项目中读取properties配置文件,新建一个main程序,对应位置建立一个名称为config.properties配置文件,随意放置一些键值对。IDEA建立配置文件,对应package鼠标右键,点击New,再点击ResourceBundle,弹出对话框输入名称保存即可。!(https://osci
Wesley13 Wesley13
4年前
Java基础学习总结(15)——java读取properties文件总结
一、java读取properties文件总结  在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用get
Easter79 Easter79
4年前
SpringBoot系列之@PropertySource读取yaml文件
SpringBoot系列之@PropertySource支持yaml文件读取最近在做实验,想通过@PropertySource注解读取配置文件的属性,进行映射,习惯上用properties都是测试没问题的,偶然换成yaml文件,发现都读取不到属性值因为yaml语法很简洁,比较喜欢写yaml配置文件,很显然,@PropertySource默认不支持ya
Stella981 Stella981
4年前
SpringBoot学习笔记
1. 读取application.properties配置文件  application.properties内容:book.namespringbootbook.number${random.value}读取代码@RestController
Stella981 Stella981
4年前
SpringBoot读取配置文件信息
application.properties配置文件的读取方式有以下两种Environment方式读取框架中有一个org.springframework.core.env.Environment类,可以读取application.properti
Easter79 Easter79
4年前
SpringBoot读取配置文件信息
application.properties配置文件的读取方式有以下两种Environment方式读取框架中有一个org.springframework.core.env.Environment类,可以读取application.properti
Easter79 Easter79
4年前
SpringBoot学习笔记
1. 读取application.properties配置文件  application.properties内容:book.namespringbootbook.number${random.value}读取代码@RestController