前言
之前在使用框架的时候总是需要配置一个以.Properties结尾的文件。我只是按照教程一点点的复制粘贴,从来没有深入思考过为什么将这个文件作为配置信息。后来知道了Properties类才知道原因。
简介
- 概述
Properties不是一个IO流, 是一个集合。 是Hashtable的子类。
使用Properties主要是为了描述程序中的属性列表文件。 有时候, 我们会将一些比较简单的项目的配置信息, 以 .properties 格式的文件进行存储。 可以使用Properties对象读写.properties 文件。 - 注意
因为存储的是属性,属性本来就是以键值对的方式存储.这里的键和值都必须是字符串.所以不需要考虑泛型 - Properties作用
1.是HashTable的子类,所以也是键值对形式,保存,操作更容易
2.默认键值都是字符串,所以不需要再考虑泛型
3.提供了一批好用的方法,方便使用(load(),store(),list()等)
基本使用
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文件内容
- 注意:
1.这里是修改过一次的文件
2.Propertes文件中对应的也应该是键值对
3.键和值之间可以是=或者空格或者冒号
4.默认每行只写一个键值对
#\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);
}
网友评论