Properties是一种特殊的文本文件,可用来存储配置文件,或者存储一些键值对格式的数据信息
一、底层原理
分析源码可知,Properties底层实现是Map
二、创建&常用方法&遍历
1、创建
// 创建Properties对象
Properties properties = new Properties();
2、常用方法
因为Properties底层实现是Map,所以Map对象可用的方法,Properties也可以用
【方法一】put(String key, String value):添加元素/修改元素;key在Properties中已存在,put会修改原元素的值
【方法二】remove(String key):删除元素
【方法三】get(String key):获取元素
【方法四】clear():清空Properties内的所有元素
更多参考Map常用方法
https://blog.csdn.net/qq_42108331/article/details/130648102
3、遍历
参考Map的三种遍历方式,都可以套用
https://blog.csdn.net/qq_42108331/article/details/130650223
三、Properties独有的方法
【方法一】setProperty(String key, String value):添加元素/修改元素
// 创建Properties对象
Properties properties = new Properties();
// 方法一:如果键不存在,相当于put;如果存在,就修改原元素的值
properties.setProperty("admin", "123456");
properties.setProperty("admin", "654321");
properties.setProperty("root", "sa");
properties.setProperty("local", "8080");
properties.setProperty("guest", "qwer");
System.out.println(properties);
【方法二】get(String key):根据键查找元素
// 创建Properties对象
Properties properties = new Properties();
// 方法一:如果键不存在,相当于put;如果存在,就修改原元素的值
properties.setProperty("admin", "123456");
properties.setProperty("admin", "654321");
properties.setProperty("root", "sa");
properties.setProperty("local", "8080");
properties.setProperty("guest", "qwer");
// 方法二:根据键获取元素的值
System.out.println("admin=" + properties.get("admin"));
System.out.println("root=" + properties.get("root"));
值得一提的是,properties.get()有个重载方法,可以设置没找到元素时,要返回的信息
// 创建Properties对象
Properties properties = new Properties();
// 方法一:如果键不存在,相当于put;如果存在,就修改原元素的值
properties.setProperty("admin", "123456");
properties.setProperty("admin", "654321");
properties.setProperty("root", "sa");
properties.setProperty("local", "8080");
properties.setProperty("guest", "qwer");
// 根据键获取不到元素的值,可以在方法后面设置未找到时,返回“未找到”
System.out.println(properties.getProperty("unknown", "未找到"));
【方法三】stringPropertyNames():把Properties的key值返回成一个不可修改的Set集合
需要注意的是,该方法返回的集合不可修改,也不能强制类型转换,仅可打印查看
// 创建Properties对象
Properties properties = new Properties();
// 方法一:如果键不存在,相当于put;如果存在,就修改原元素的值
properties.setProperty("admin", "123456");
properties.setProperty("admin", "654321");
properties.setProperty("root", "sa");
properties.setProperty("local", "8080");
properties.setProperty("guest", "qwer");
// 方法三:把Properties的key值返回成一个不可修改的Set集合
Set<String> set = properties.stringPropertyNames();
System.out.println(set);
四、保存&读取本地Properties信息
1、store(Writer writer, String comments):保存Properties到本地
// 创建Properties对象
Properties properties = new Properties();
properties.setProperty("admin", "123456");
properties.setProperty("admin", "654321");
properties.setProperty("root", "sa");
properties.setProperty("local", "8080");
properties.setProperty("guest", "qwer");
// 保存Properties的信息到本地,参数一:字符输出流;参数二:Properties文件内的注释信息
properties.store(new FileWriter("prop.properties"), "This is a properties file.");
2、load(Reader reader):加载本地的Properties文件
// 创建Properties对象
Properties properties = new Properties();
// 加载本地的Properties文件,参数是字符输入流
properties.load(new FileReader("prop.properties"));
// 打印加载的信息
System.out.println(properties);
五、总结&注意事项
总的来说,Properties用起来相当于Key和Value都指定为String的Map对象,只是在此基础上增加了保存到本地(store方法)和从本地读取(load方法)的方法
另外需要注意的是,如果手动编写Properties文件,键和值之间用“=”连接,不要另外加分号或者空格