一. 什么是Properties?

java.util.Properties  继承Hashtable,表示一个持久的属性集
Properties可以保存在流中或者从流中加载

Properties集合是一个唯一和IO流相结合的集合
    1.可以使用Properties集合的方法store,把集合中的临时数据,持久化写入到硬盘中存储
    2.可以使用Properties集合中方法load,把硬盘中保存的文件(键值对),读取到集合中使用
    3.Properties集合是一个双列集合,key和values默认都是字符串

二. Properties类

1.构造方法

Properties() 创建一个没有默认值的空属性列表。

2.常用方法

/**
     * 使用Properties集合存储数据,遍历取出Properties集合中的数据
     * Properties集合中有操作字符串的特有方法
     * Object setProperty(String key, String value);调用Hashtable方法 put 。
     * String getProperty(String key)通过key获取value。相当于map集合中get(key)方法
     * Set<String> stringPropertyNames();返回键集,相当于map集合中keyset方法
    */

3.代码实现

private static void show() {
        //创建Properties集合对象
        Properties prop = new Properties();
        //使用setProperty往集合中添加数据
        prop.setProperty("沈腾", "175");
        prop.setProperty("贾玲", "165");
        prop.setProperty("张小斐", "170");
        //使用stringPropertyNames把Properties集合中的键取出,存到Set集合中
        Set<String> set = prop.stringPropertyNames();
        //遍历Set集合,取出Properties集合每一个键
        for (String key : set) {
            String value = prop.getProperty(key);
            System.out.println(key + "=" + value);
        }
    }

4.Properties中store方法

1)方法:
    void store(OutputStream out, String comments)
    void store(Writer writer, String comments)
    参数:
          OutputStream out:字节输出流,不能写入中文
          Writer writer:字符输出流,可以写中文
          String comments:注释:用来解释说明保存的文件是做什么的(不能用中文,会乱码,默认unicode)

2)作用:把集合中的临时数据,持久化写入到硬盘中存储

3)使用步骤:
        1.创建Properties集合对象,添加数据
        2.创建字节/字符流输出对象,构造方法中绑定输出目的地
        3.使用Properties集合中方法store,把集合中的临时数据,持久化写入到硬盘中
        4.释放资源
4)代码实现:
     public static void main(String[] args) throws IOException {
          //创建Properties集合对象
          Properties prop = new Properties();
          //使用setProperty往集合中添加数据
          prop.setProperty("沈腾", "175");
          prop.setProperty("贾玲", "165");
          prop.setProperty("张小斐", "170");
          FileWriter fw = new FileWriter("G:\\a.txt");
          prop.store(fw, "sava_data");
        //prop.stroe(new FileOutputStream("G:\\a.txt"),"sava_data")
          fw.close();
          /*
          #sava_data
          #Tue Mar 23 22:26:10 CST 2021
          贾玲=165
          张小斐=170
          沈腾=175
           */
      }

5.Properties中load方法

1)方法:
    void load(InputStream inStream)从输入字节流读取属性列表(键和元素对)。
    void load(Reader reader)以简单的线性格式从输入字符流读取属性列表(关键字和元素对)。
    参数:
        InputStream inStream:字节输入流,不能读取含有中文的键值对
        Reader reader:字符输入流,可以读取中文的键值对

2)作用:
    把硬盘中保存的文件(键值对),读取到集合中

3)使用步骤:
    1.创建properties集合对象
    2.使用properties集合对象中的方法load读取保存键值对的文件
    3.遍历properties集合
    注意:
        1.存储键值对的文件中,键与值默认的链接符号可以使用=,空格或者其他符号
        2.存储键值对的文件中,可以使用#注释,备注是的键值对不会再读取
        3.存储键值对的文件中,键值对默认都是字符串,不用再加引号

4)代码实现:
      //1.创建Properties集合对象
      Properties prop = new Properties();
      //2.使用properties集合对象中的方法load读取保存键值对的文件
      prop.load(new FileReader("G:\\a.txt"));
      //3.遍历properties集合
      Set<String> set = prop.stringPropertyNames();
      for (String key : set) {
          String value = prop.getProperty(key);
          System.out.println(key+"="+value);