Java如何读写Properties配置文件(Properties类)
Java读写Properties配置文件
Properties基本介绍
专门用来读写配置文件的集合类,Properties
类表示一组持久的属性。 Properties
可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串。
属性列表可以包含另一个属性列表作为其“默认值”; 如果在原始属性列表中找不到属性键,则会搜索此第二个属性列表。
因为Properties
从继承Hashtable
时, put
种putAll
方法可应用于Properties
对象。 强烈不鼓励使用它们,因为它们允许调用者插入其键或值不是Strings
。 应该使用setProperty
方法。
如果store
或save
方法在包含非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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java Spring详解如何配置数据源注解开发以及整合Junit
Spring 是目前主流的 Java Web 开发框架,是 Java 世界最为成功的框架。该框架是一个轻量级的开源框架,具有很高的凝聚力和吸引力,本篇文章带你了解如何配置数据源、注解开发以及整合Junit2021-10-10在SpringBoot中使用jwt实现token身份认证的实例代码
你还不会在SpringBoot中使用jwt实现token身份认证吗,本文小编就给大家详细的介绍一下在SpringBoot中使用jwt实现token身份认证的实例代码,感兴趣的同学可以自己动手试一试2023-09-09
最新评论