Java如何读写Properties配置文件(Properties类)

 更新时间:2023年05月12日 15:34:22   作者:Tangable1024  
这篇文章主要介绍了Java如何读写Properties配置文件(Properties类),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

Java读写Properties配置文件

Properties基本介绍

专门用来读写配置文件的集合类,Properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。

属性列表可以包含另一个属性列表作为其“默认值”; 如果在原始属性列表中找不到属性键,则会搜索此第二个属性列表。

因为Properties从继承Hashtable时, putputAll方法可应用于Properties对象。 强烈不鼓励使用它们,因为它们允许调用者插入其键或值不是Strings 。 应该使用setProperty方法。

如果storesave方法在包含非String键或值的“受损害” Properties对象上调用,则调用将失败。

类似地,如果在包含非String密钥的“受损害” Properties对象上调用propertyNames或list方法的调用将失败。

配置文件的格式:键 = 值(key = value)

PS:键值对不需要有空格,值不需要用引号包起来。默认类型为String

properties是配置文件。

主要的作用是通过修改配置文件可以方便地修改代码中的参数,实现不用改class文件即可灵活变更参数。

解释:java运行中java文件会变成class文件,之后无法通过反编译找到原样的代码,这样的话,如果java类中某个参数变更,就很难灵活的实现参数修改,这个时候properties 文件就能很灵活的实现配置,减少代码的维护成本和提高开发效率。

Properties常用方法

  • load()//加载配置文件的键值对到Properties对象中
  • list()//将数据显示到指定位置
  • getProperty(key)//根据键获取值
  • setProperty(key,value)//设置键值对到Properties对象中
  • store()//将Properties中的键值对存储到配置文件之后,在idea中,保存信息到配置文件,如果含有中文,会存储为unicode码
  • loadFromXML(InputStream)storeToXML(OutputStream, String, String)//方法以简单的XML格式加载和存储属性。 默认情况下,使用UTF-8字符编码,但是如果需要,可以指定特定编码。 需要实现支持UTF-8和UTF-16,并可能支持其他编码。

XML属性文档具有以下DOCTYPE声明:

Properties读取配置文件

使用Properties类来读取test.properties文件

  • 1.创建Properties对象
  • 2.加载指定配置文件
  • 3.把键值对(k=v)显示在控制台
  • 4.根据key获取对应的value值
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
public class Test01 {
    public static void main(String[] args) throws IOException {
        //创建Properties对象
        Properties properties = new Properties();
        //加载配置文件
        properties.load(new FileReader("E:\\Java_基础\\code\\IO流\\src\\test.properties"));
        //将内容显示在控制台
        properties.list(System.out);
        //通过key获取value
        String user = properties.getProperty("user");
        String password = properties.getProperty("password");
        System.out.println("用户名:"+user);
        System.out.println("密码:"+password);
    }
}

Properties写入配置文件

使用Properties来创建配置文件并设置内容

  • 1.创建Properties对象
  • 2.创建对应的键值对setProperty(String key,String value)
  • 3.将键值对存储到指定的配置文件中store(Writer writer, String comments)

PS:如果文件中没有key,就是创建一对键值对,如果该文件有key,就是修改该键对应的值

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class Test02 {
    public static void main(String[] args) throws IOException {
        //创建对象
        Properties properties = new Properties();
        //设置键值对
        properties.setProperty("user","root");
        properties.setProperty("password","abcdef");
        //写入到指定文件,如果没有,就创建该文件
        properties.store(new FileWriter("E:\\Java_基础\\code\\IO流\\src\\demo.properties"),null);
        //如果comments参数不为空,则首先将ASCII #字符,注释字符串和行分隔符写入输出流。 因此, comments可以作为识别评论。
        //注释行始终写入,由ASCII #组成,当前日期和时间(如当前时间Date的toString方法生成的)以及由Writer生成的行分隔Writer 。
    }
}

properties文件的读取和写入

properties文件是一种属性文件,这种文件以key=value(键值对)格式存储内容。Java中可以使用Properties类来读取这个文件,使用Properties类中的getProperties(key)方法来得到对应的数据。

一般properties文件作为一些参数的存储,使得代码更加灵活。

properties文件的读取

(1)使用BufferedInputStream(缓冲输入流)创建输入流进行读取,读取后以key=value(键值对)格式存储数据。

代码实现:

 //Properties格式文件的读取
    //创建输入流
    try (
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\student\\aaa.properties"))) {
        int data =-1;
        while((data=bis.read())!=-1) {
            System.out.print((char)data);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //运行结果
    //k=12
    //b=34
    //c=11

(2)使用Properties类中的load()方法读取,将“输入流”加载到Properties集合对象中,根据key来获取value的值

代码实现:

try (
     BufferedInputStream bis = new BufferedInputStream(new FileInputStream("D:\\student\\aaa.properties"))) {
        Properties props=new Properties();
          props.load(bis);//将“输入流”加载到Properties集合对象中
               //根据key,获取value
                System.out.println(props.get("k"));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    //运行结果
    //12

properties文件的写入

因为properties文件数据是以集合形式存储,所以可以用put()方法将KV键值对存入Properties集合中,再通过输出流使用store()方法将集合中的临时数据,持久化写入硬盘中存储。

//properties格式文件的写入
    try{
        Properties props=new Properties();
        props.put("Q", "123");
        props.put("W", "432");
        props.put("E", "986");
        props.put("R", "457");
    //使用“输出流”,将properties集合中的KV键值对,写入*.properties文件
      try (BufferedOutputStream bos = new BufferedOutputStream(
            new FileOutputStream("D:\\student\\bbb.properties"))) {
        props.store(bos, "just do IT");
      }
    } catch (IOException e) {
        e.printStackTrace();
    }
//运行结果
//    #just do IT
//    #Wed Jun 01 00:14:57 CST 2022
//    W=432
//    R=457
//    Q=123
//    E=986

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring中的REST分页的实现代码

    Spring中的REST分页的实现代码

    本文将介绍在REST API中实现分页的基础知识。我们将专注于使用Spring Boot和Spring Data 在Spring MVC中构建REST分页,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • java实现动态数组

    java实现动态数组

    这篇文章主要为大家详细介绍了java实现动态数组,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java实现音频转文本的示例代码(语音识别)

    Java实现音频转文本的示例代码(语音识别)

    Java中实现音频转文本通常涉及使用专门的语音识别服务,本文主要介绍了Java实现音频转文本的示例代码(语音识别),具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • Java IO流之字符缓冲流实例详解

    Java IO流之字符缓冲流实例详解

    这篇文章主要介绍了Java IO流之字符缓冲流,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Java Spring详解如何配置数据源注解开发以及整合Junit

    Java Spring详解如何配置数据源注解开发以及整合Junit

    Spring 是目前主流的 Java Web 开发框架,是 Java 世界最为成功的框架。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力,本篇文章带你了解如何配置数据源、注解开发以及整合Junit
    2021-10-10
  • MyBatis-Plus中通用枚举的实现

    MyBatis-Plus中通用枚举的实现

    表中的有些字段值是固定的此时我们可以使用MyBatis-Plus的通用枚举来实现,本文主要介绍了MyBatis-Plus中通用枚举的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • SpringBoot定制化Starter实现方法

    SpringBoot定制化Starter实现方法

    小伙伴们曾经可能都经历过整天写着CURD的业务,都没写过一些组件相关的东西,这篇文章记录一下SpringBoot如何自定义一个Starter。原理和理论就不用多说了,可以在网上找到很多关于该方面的资料,这里主要分享如何自定义
    2023-01-01
  • spring boot整合shiro安全框架过程解析

    spring boot整合shiro安全框架过程解析

    这篇文章主要介绍了spring boot整合shiro安全框架过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 在SpringBoot中使用jwt实现token身份认证的实例代码

    在SpringBoot中使用jwt实现token身份认证的实例代码

    你还不会在SpringBoot中使用jwt实现token身份认证吗,本文小编就给大家详细的介绍一下在SpringBoot中使用jwt实现token身份认证的实例代码,感兴趣的同学可以自己动手试一试
    2023-09-09
  • Java定义画板类的方法

    Java定义画板类的方法

    这篇文章主要为大家详细介绍了Java定义画板类的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论