java.util.Properties 继承了 Hashtable ,实现了 Seriaizable,Clonable,Map接口,表示一个持久的属性集,Properties可保存在流中或从流中加载,属性列表中的每个键及其对应值都是一个字符串。
作用
- 可以使用 Properties 集合中的方法 store,把集合中的临时数据,持久化写入到硬盘中存储
- 可以使用 Properties 集合中的方法 load,把硬盘中的文件读取到集合中使用
使用
键值对操作:
- Object setProperty(String key, String value):调用 Hashtable 中的方法put
- String getProperty(String key):通过 key 找到 value,相当于 Map 集合中的 get(key)
- Set
stringPropertyNames():返回此属性列表中的键值,其中该键对应的值为字符串,相当于 Map 中的keySet() 方法
持久化:
- void store(OutputStream out , String comments)
- void store(Writer writer , String comments)
- 持久化参数解释:(持久化默认编码 Unicode)
- 支持通过字节流(不支持中文)和字符流(支持中文)持久化;
- comments,注释,用来保存说明该属性文件是干嘛用的,一般使用”空字符串” ```java Properties properties = new Properties(); // 插入数据 properties.setProperty(“张三”, “18”); properties.setProperty(“李四”, “20”); properties.setProperty(“王五”, “19”);
// 获取所有的key
Set
// 遍历 for (String key : set) { System.out.println(properties.get(key)); }
// 通过字节流持久化 try (FileOutputStream fos = new FileOutputStream(“first.properties”)) { properties.store(fos, “测试”); } catch (IOException e) { e.printStackTrace(); }
// 通过字符流持久化 try (FileWriter fw = new FileWriter(“writer.properties”)) { properties.store(fw, “测试”); } catch (IOException e) { e.printStackTrace(); }
从磁盘加载键值对:
> 注意事项:
> 1. 存储键值对的文件中,键与值默认的连接符号可以使用 = ,空格,或其他符号
> 1. 存储键值对的文件中,可以使用 # 进行注释,被注释的键值对不会再被读取
> 1. 存储键值对的文件中,键与值默认都是字符串,不用再加引号
- void load(InputStream in)
- void load(Reader reader)
```java
/* 通过字节输入流加载 */
Properties prop = new Properties();
try (FileInputStream fis = new FileInputStream("first.properties")) {
prop.load(fis);
} catch (IOException e) {
e.printStackTrace();
}
Set<String> keys = prop.stringPropertyNames();
for (String key : keys) {
System.out.println(key + ":" + prop.getProperty(key));
}
/* 通过字符输入流加载 */
Properties property = new Properties();
try (FileReader fr = new FileReader("writer.properties")) {
property.load(fr);
} catch (IOException e) {
e.printStackTrace();
}
Set<String> keyProps = prop.stringPropertyNames();
for (String key : keyProps) {
System.out.println(key + ":" + prop.getProperty(key));
}