properties集合

Properties属性集

它继承自hashtable类,所以也是键值对形式存储数据的双列集合,且键和值都是一个字符串,我们要注意哈,hashmap和hashtable也继承自map接口,但是hashmap是用来取代hashtable的,因为hashtabl线程不安全,键值对都不能为null之类的

它是唯一一个和io流结合的集合

  • 我们可以使用propperties集合中的store()方法把集合中的临时数据持久化写入到硬盘存储.
  • 我们也可以使用properties集合中的load()方法把硬盘中保存的文件(内容必须是键值对的哈),读取到集合中使用
  • 对于store()方法的举例:
/**
     * 将properties集合中存储的临时数据保存到硬盘中
     * public void store(OutputStream  out, String  comments)
     * public void store(Writer  writer, String  comments)
     *  参数:
     *      OutputStream  out:字节输出流,不能写入中文
     *      Writer  writer: 字符输出流,随便写啥都行
     *      String  comments: 注释,用于解释说明我保存的文件是干啥的
     *      注意这个注释不能使用中文,会产生乱码,因为它默认是unicode编码,一般使用空字符串
     *  使用步骤:
     *      1. 创建properties集合对象,添加数据
     *      2. 创建字节/字符输出流对象,构造方法中绑定要输出的目的地
     *      3. 使用properties集合中的store方法把集合中的临时数据持久化写入到硬盘中
     *      4. 关闭流
     */
    private static void show1() {
        //1. 创建properties集合对象,添加数据
        Properties prop = new Properties();
        prop.setProperty("fan1", "18");
        prop.setProperty("fan2", "19");
        prop.setProperty("fan3", "20");
        prop.setProperty("fan4", "21");

        //创建字节/字符输出流对象,构造方法中绑定要输出的目的地,我就放在项目中
        FileWriter fw = null;
        try {
            fw = new FileWriter("prop.txt");
            
            //3. 使用properties集合中的store方法把集合中的临时数据持久化写入到硬盘中
            prop.store(fw,"save_data");
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fw.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
  • **对于load()方法的举例: **
 /**
     * public void load(InputStream  inStream): 不能读取含有中文的键值对
     * public void load​(Reader reader):能读取含有中文的键值对
     * 注意:
     *  1. 键值对之间的连接符一般都是=
     *  2. 我们可以用#进行注释,#修饰的内容不会被读取
     *  3. 键值对都默认是字符串,不用加引号
     *
     */
    private static void show2() {
        //1.创建properties对象
        Properties prop = new Properties();
        //2.创建输入流对象
        FileReader fr = null;
        try {
            fr = new FileReader("prop.txt");

            //读取数据到集合对象中
            prop.load(fr);

            //遍历集合
            Set<String> names = prop.stringPropertyNames();
            for (String s : names) {
                String value = prop.getProperty(s);
                System.out.println(s + ": " + value);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            //关闭流
            try {
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

因为properties的键值对都是字符串类型的,所以它其中会有一些操作字符串的特殊的方法

  • public Object setProperty​(String key, String value), 调用Hashtable方法put存储数据到集合中.
  • public String getProperty(String key, String defaultValue, 通过键获取值,就相当于map集合中的get(key)方法.
  • public Set stringPropertyNames(), 从此属性列表返回一组不可修改的键,就相当于map集合中的keyset()方法.
  • **对于操作字符串方法的举例: **
private static void show() {
    //创建properties集合对象
    Properties prop = new Properties();
    //向集合中添加数据
    prop.setProperty("fan1", "18");
    prop.setProperty("fan2", "19");
    prop.setProperty("fan3", "20");
    prop.setProperty("fan4", "21");

    //遍历集合
    Set<String> names = prop.stringPropertyNames();
    for (String s : names) {
        System.out.println(s + ": " + prop.getProperty(s));
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值