Properties 属性集合类
属性集合类(用作txt格式的配置文件),这个类是Hashtbale的子类,而Hashtable也Map下面的双列集合
注意:该类没有泛型
Properties里面的特殊功能:
public Object setProperty(String key,String value):和添加相关的:
public Set<String> stringPropertyNames():获取所有的键的集合
public String getProperty(String key):获取指定的属性集合中的键的值
这里的集合必须是:Properties属性集合
public void load(Reader reader):将文本文件的数据读取集合中
public void store(Writer writer, String comments):将集合中的数据保存到文本文件中
comments:属性列表的描述
需求:
我有一个文本文件(user.txt),我知道数据是键值对形式的,但是不知道内容是什么。
请写一个程序判断是否有“lisi”这样的键存在,如果有就改变其实为”100”
1)先将文件中的数据加载到集合中
2)获取键的集合,遍历键的集合
判断:如果"lisi"就是里面的key,
是的话就修改
3)重新将集合中的数据保持到文件中
代码:
public static void main(String args[]) throws IOException{
//创建属性集合类对象
Properties p = new Properties();
p.put("zhangsan","27");
p.put("lisi","28");
p.put("wangwu","29");
p.store(new FileWriter("c.txt"), null);
//将文本中的数据转为集合
p.load(new FileReader("c.txt"));
//获取键的集合
p.setProperty("zhaoyuhao", "23");
Set<String> Names = p.stringPropertyNames();
//遍历
for(String s :Names){
if(s.equals("lisi"));
p.setProperty("xiaolisi", "100");
break;
}
//保存到文本文件中
p.store(new FileWriter("d.txt"), null);
}
结果:
c.txt:
Tue Aug 15 11:45:11 CST 2017
zhangsan=27
lisi=28
wangwu=29
d.txt;
Tue Aug 15 11:45:11 CST 2017
xiaolisi=100
zhangsan=27
zhaoyuhao=23
lisi=28
wangwu=29