对Properties类个人理解

2021-06-08  本文已影响0人  顺风飘千里

前言

之前在使用框架的时候总是需要配置一个以.Properties结尾的文件。我只是按照教程一点点的复制粘贴,从来没有深入思考过为什么将这个文件作为配置信息。后来知道了Properties类才知道原因。

简介

基本使用

public static void fun1(){
    Properties properties = new Properties();
    properties.setProperty("first","java");//写入first=java键值对
    properties.setProperty("second","php");
    properties.setProperty("third","python");
    System.out.println(properties);//重写了toString方法
    properties.setProperty("first","haha");//key是唯一的,后面的值会将前面的值覆盖
    System.out.println(properties.get("first"));
    //当前的key在Properties中不存在时,会打印c
    System.out.println(properties.getProperty("first1","c"));
    System.out.println(properties);
}

获取系统属性

public static void fun2(){
//获取系统属性
Properties properties = System.getProperties();
System.out.println(properties);
//获取所有键的名字
Set<String> set = properties.stringPropertyNames();
//遍历得到值
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()){
String key = iterator.next();
System.out.println("key:"+key+"
value:"+properties.getProperty(key));
}
//第一次修改属性信息
properties.setProperty("user.language","ch");
System.out.println(properties.getProperty("user.language"));//ch
//再获取一次属性信息
//思考?经过第一次的修改,我们发现user.language的值变成了ch,再次获取属性,得到的仍然是ch
//系统属性可以这样很轻易的更改吗?
//原理:会先到内存中找属性集合的对象,如果有,直接使用.如果没有,会重新初始化一个新的对象,并获取属性集合.
Properties properties1 = System.getProperties();
System.out.println(properties1.getProperty("user.language"));//ch
}

实际应用

加载一个 .properties 文件中的数据,后缀名也可以不是properties.但是一般我们写成properties,方便使用.
a.properties文件内容

#\u6539\u53D8\u4E86\u51B0\u51B0\u7684\u503C
#Fri Oct 16 17:52:51 IRKT 2020
name=我们
wss=06
zhaoliu=05
zhangsan=02
lisi=03
bingbing=buok
zhaoliu=04
public static void fun3() throws IOException {
//读取a.txt的内容到Properties对象里面
Properties properties = new Properties();
//利用load方法将内容从磁盘读入Properties对象
properties.load(new FileReader("D:\\ideaProgram\\BigDataBK2001N06\\a.txt"));
//System.out.println(properties);
//改变内容
properties.setProperty("bingbing","buok");
//使用store方法将数据写入磁盘
properties.store(new FileWriter("D:\\ideaProgram\\BigDataBK2001N06\\a.txt"),"改变了冰冰的值");
//写入控制台---通过list
properties.list(System.out);
}
上一篇下一篇

猜你喜欢

热点阅读