美文网首页
对Properties类个人理解

对Properties类个人理解

作者: 顺风飘千里 | 来源:发表于2021-06-08 21:02 被阅读0次

    前言

    之前在使用框架的时候总是需要配置一个以.Properties结尾的文件。我只是按照教程一点点的复制粘贴,从来没有深入思考过为什么将这个文件作为配置信息。后来知道了Properties类才知道原因。

    简介

    • 概述
      Properties不是一个IO流, 是一个集合。 是Hashtable的子类。
      使用Properties主要是为了描述程序中的属性列表文件。 有时候, 我们会将一些比较简单的项目的配置信息, 以 .properties 格式的文件进行存储。 可以使用Properties对象读写.properties 文件。
    • 注意
      因为存储的是属性,属性本来就是以键值对的方式存储.这里的键和值都必须是字符串.所以不需要考虑泛型
    • Properties作用
      1.是HashTable的子类,所以也是键值对形式,保存,操作更容易
      2.默认键值都是字符串,所以不需要再考虑泛型
      3.提供了一批好用的方法,方便使用(load(),store(),list()等)

    基本使用

    public static void fun1(){
        Properties properties = new Properties();
        properties.setProperty("first","java");//写入first=java键值对
        properties.setProperty("second","php");
        properties.setProperty("third","python");
        System.out.println(properties);//重写了toString方法
        properties.setProperty("first","haha");//key是唯一的,后面的值会将前面的值覆盖
        System.out.println(properties.get("first"));
        //当前的key在Properties中不存在时,会打印c
        System.out.println(properties.getProperty("first1","c"));
        System.out.println(properties);
    }
    
    

    获取系统属性

    public static void fun2(){
    //获取系统属性
    Properties properties = System.getProperties();
    System.out.println(properties);
    //获取所有键的名字
    Set<String> set = properties.stringPropertyNames();
    //遍历得到值
    Iterator<String> iterator = set.iterator();
    while (iterator.hasNext()){
    String key = iterator.next();
    System.out.println("key:"+key+"
    value:"+properties.getProperty(key));
    }
    //第一次修改属性信息
    properties.setProperty("user.language","ch");
    System.out.println(properties.getProperty("user.language"));//ch
    //再获取一次属性信息
    //思考?经过第一次的修改,我们发现user.language的值变成了ch,再次获取属性,得到的仍然是ch
    //系统属性可以这样很轻易的更改吗?
    //原理:会先到内存中找属性集合的对象,如果有,直接使用.如果没有,会重新初始化一个新的对象,并获取属性集合.
    Properties properties1 = System.getProperties();
    System.out.println(properties1.getProperty("user.language"));//ch
    }
    

    实际应用

    加载一个 .properties 文件中的数据,后缀名也可以不是properties.但是一般我们写成properties,方便使用.
    a.properties文件内容

    • 注意:
      1.这里是修改过一次的文件
      2.Propertes文件中对应的也应该是键值对
      3.键和值之间可以是=或者空格或者冒号
      4.默认每行只写一个键值对
    #\u6539\u53D8\u4E86\u51B0\u51B0\u7684\u503C
    #Fri Oct 16 17:52:51 IRKT 2020
    name=我们
    wss=06
    zhaoliu=05
    zhangsan=02
    lisi=03
    bingbing=buok
    zhaoliu=04
    
    • 读取数据/遍历数据/修改数据/写回数据
    public static void fun3() throws IOException {
    //读取a.txt的内容到Properties对象里面
    Properties properties = new Properties();
    //利用load方法将内容从磁盘读入Properties对象
    properties.load(new FileReader("D:\\ideaProgram\\BigDataBK2001N06\\a.txt"));
    //System.out.println(properties);
    //改变内容
    properties.setProperty("bingbing","buok");
    //使用store方法将数据写入磁盘
    properties.store(new FileWriter("D:\\ideaProgram\\BigDataBK2001N06\\a.txt"),"改变了冰冰的值");
    //写入控制台---通过list
    properties.list(System.out);
    }
    

    相关文章

      网友评论

          本文标题:对Properties类个人理解

          本文链接:https://www.haomeiwen.com/subject/zuwjeltx.html