Java之Properties类解析

Map接口有一个实现类Hashtable,而Hashtable中存在Properties这一子类。Properties类在实际应用中非常重要。

不同的编程语言有着不同的配置文件,而且配置文件里的很多变量是要经常做修改的,为了方便用户配置,让用户能够脱离程序本身去修改相关的变量配置,这时候Properties就派上用场了。它主要用来存储字符串类型的键和值,在实际开发中,经常使用它来存取应用的配置项。

Properties中的方法:
在这里插入图片描述在这里插入图片描述其中的一些常用方法:
1、public Properties() 创建一个没有默认值的空属性列表。

2、public void load(InputStream inStream)
(记得要throws IOException)
从输入字节流读取属性列表(键和元素对)。 输入流采用load(Reader)中规定的简单的面向行的格式。

3、public Object setProperty(String key,String value) 类似于put一样添加新的键值对,如果key和value缺少一个, 则为null 。

4、public void store(OutputStream out,String comments)
(也需要throws IOException)

将此属性列表(键和元素对)写入此Properties表中,以适合于使用load(InputStream)方法加载到Properties表中的格式输出流。 如果comments参数不为空,则首先将ASCII #字符,注释字符串和行分隔符写入输出流。
此Properties表(如果有)的默认表的Properties 不会被此方法写出。
在写入条目之后,输出流被刷新。 此方法返回后,输出流保持打开状态。

关于comments:如果comments参数不为空,则首先将ASCII #字符,注释字符串和行分隔符写入输出流。 因此, comments可以作为识别评论。 由注释中的换行符(’\ n’),回车符(’\ r’)或回车符后面的换行符替换为由Writer生成的行分隔Writer ,如果下一个字符在评论不是字符#或字符!那么ASCII #是该行分隔符后写出。 接下来,注释行始终写入,由ASCII #组成,当前日期和时间(如当前时间Date的toString方法生成的)以及由Writer生成的行分隔Writer 。
然后,这个Properties表中的每个条目都被写出,每行一个。 对于每个条目,键字符串被写入,然后是ASCII = ,然后是相关联的元素字符串。 对于密钥,所有空格字符都用前面的\字符写入。 对于元素,前导空格字符,但不是嵌入或尾随空格字符,写入前面的\字符。 键和元素字符# , ! , =和:被写入时加上正斜杠,以确保它们被正确装载。

参数 out - 输出流。 comments - 属性列表的描述。

5、public void storeToXML(OutputStream os, String comment)
(也需要throws IOException)
发出表示此表中包含的所有属性的XML文档。

6、public void list(PrintStream out)
将此属性列表打印到指定的输出流。 此方法对调试非常有用。

以下是一个关于Properties的常用方法的小代码,方便我们更好的理解~

package com.company;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
import java.util.Properties;
public class Task {
    public static void main(String[] args) throws Exception{
        //创建Properties对象
        Properties pps=new Properties();
        //加载要读取的文件test.properties
        FileInputStream ins=new FileInputStream("test.properties");
        pps.load(ins);
        //加入新的键值对
        pps.setProperty("First","Fisrt_value");
        //遍历一下此时文件中的内容
        pps.forEach((k,v)-> System.out.println(k+"="+v));
        //使用store写入新的键值对,指定要写入操作的文件名称和位置
        FileOutputStream ous=new FileOutputStream("test.properties");
        //向Properties类文件进行写入键值对信息
        pps.setProperty("Second","Second_value");
        pps.store(ous,"new_content");
        System.out.println("----------------------------");
        pps.forEach((k,v)-> System.out.println(k+"="+v));
        System.out.println("-----------------------------");
        //使用list方法,该方法多用于调试
        pps.list(System.out);
    }
}

输出结果:
在这里插入图片描述在这里插入图片描述最终test.Properties内容:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值