java.util.Properties 继承了 Hashtable ,实现了 Seriaizable,Clonable,Map接口,表示一个持久的属性集,Properties可保存在流中或从流中加载,属性列表中的每个键及其对应值都是一个字符串。

作用

  1. 可以使用 Properties 集合中的方法 store,把集合中的临时数据,持久化写入到硬盘中存储
  2. 可以使用 Properties 集合中的方法 load,把硬盘中的文件读取到集合中使用

使用

键值对操作:

  1. Object setProperty(String key, String value):调用 Hashtable 中的方法put
  2. String getProperty(String key):通过 key 找到 value,相当于 Map 集合中的 get(key)
  3. Set stringPropertyNames():返回此属性列表中的键值,其中该键对应的值为字符串,相当于 Map 中的keySet() 方法

持久化:

  1. void store(OutputStream out , String comments)
  2. void store(Writer writer , String comments)
  3. 持久化参数解释:(持久化默认编码 Unicode)
    • 支持通过字节流(不支持中文)和字符流(支持中文)持久化;
    • comments,注释,用来保存说明该属性文件是干嘛用的,一般使用”空字符串” ```java Properties properties = new Properties(); // 插入数据 properties.setProperty(“张三”, “18”); properties.setProperty(“李四”, “20”); properties.setProperty(“王五”, “19”);

// 获取所有的key Set set = properties.stringPropertyNames();

// 遍历 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. 从磁盘加载键值对:
  2. > 注意事项:
  3. > 1. 存储键值对的文件中,键与值默认的连接符号可以使用 = ,空格,或其他符号
  4. > 1. 存储键值对的文件中,可以使用 # 进行注释,被注释的键值对不会再被读取
  5. > 1. 存储键值对的文件中,键与值默认都是字符串,不用再加引号
  6. - void load(InputStream in)
  7. - void load(Reader reader)
  8. ```java
  9. /* 通过字节输入流加载 */
  10. Properties prop = new Properties();
  11. try (FileInputStream fis = new FileInputStream("first.properties")) {
  12. prop.load(fis);
  13. } catch (IOException e) {
  14. e.printStackTrace();
  15. }
  16. Set<String> keys = prop.stringPropertyNames();
  17. for (String key : keys) {
  18. System.out.println(key + ":" + prop.getProperty(key));
  19. }
  20. /* 通过字符输入流加载 */
  21. Properties property = new Properties();
  22. try (FileReader fr = new FileReader("writer.properties")) {
  23. property.load(fr);
  24. } catch (IOException e) {
  25. e.printStackTrace();
  26. }
  27. Set<String> keyProps = prop.stringPropertyNames();
  28. for (String key : keyProps) {
  29. System.out.println(key + ":" + prop.getProperty(key));
  30. }