Properties配置类

四、Properties类

Properties父类为Hashtable

4.1 作用

用于对.properties这类的配置文件进行一系列更简单的操作

  • 格式:键=值,默认String类型

  • 创建一个mysql.properties文件,读取其中的ip、user、pwd值

    • mysql.properties

    ip=192.168.100.100
    user=root
    pwd=123456
  • 传统方式

    • 过于繁琐,若配置文件内容过多时,就无法有效地读取配置

    BufferedReader br= new BufferedReader(new FileReader("src:\\mysql.properties"));
    String line = "";
    while((line = br.readLine())!=null) {
         String[] split = line.split("=");
         System.out.print(split[0]+"值是"+split[1]);  
    }
    br.close();
  • 因而使用Properties类为最佳

4.2 常用方法

  • 构造方法

    • Properties():创建一个无默认值的空属性列表

    • Properties(Properties defaults):创建一个带有指定默认值的空属性列表

  • 常用方法

    【加载配置文件】

    • load ( InputStream inStream) 从byte stream中加载key/value键值对,要求所有的key/value键值对是按行存储,同时是用ISO-8859-1编译的, 不支持中文。

    • load(Reader reader) 从字符流中加载key/value键值对,要求所有的键值对都是按照行来存储的。

    • loadFromXML(InputStream ) 从xml文件中加载property,底层使用XMLUtils.load(Properties,InputStream)方法来加载。

    【获取/设置属性】

    • getProperty ( String key[,String default]) 根据指定的key获取对应的属性value值,如果在自身的存储集合中没有找到对应的key,那么就直接到默认的defaults属性指定的Properties中获取属性值。

      • default 方法返回值为null的时候,返回给定的默认值,而不是返回null。

    • setProperty ( String key, String value) 调用 Hashtable 的方法 put 。他通过调用基类的put方法来设置 键 - 值对。

      • 有key,修改

      • 无key,新增

    【写出至配置文件】

    • store ( OutputStream out, String comments) 将所有的Properties类中保存的键值对都写出到流中,中文存储的是unicode码值

      同时如果给定comments的话,那么要加一个注释。

    • storeToXML(OutputSteam out,String comment,String encoding) 写出到xml文件中。

    • Set stringPropertyNames() 获取所有Properties中所有的key集合

    【指定显示设备】

    • list(PrintStream / PrintWriter):将数据属性显示到指定设备/流对象

      PrintStream 字节输出流

      PrintWriter 字符输出流

    【清空属性】

    • clear () 清除所有装载的 键值对。该方法在基类中提供。

4.3 示例

示例1:利用Properties类完成对mysql.properties的读取

    public static void main(String[] args) {
        // 第一步:创建Properties配置类
        Properties properties = new Properties();
        InputStream in = null;
        try {
            // 第二步:创建与文件连接的输入流
            String currentDir = System.getProperty("user.dir");
            in = new FileInputStream(currentDir + "\\src\\io\\Properties\\mysql.properties");
            // 第三步:加载要读取的配置文件 参数InputStream类型
            properties.load(in);
            // 第四步:获取所需的属性
            String ip = properties.getProperty("ip");
            String user = properties.getProperty("user");
            String pwd = properties.getProperty("pwd");
            System.out.print(ip + " " + user + " " + pwd);
            // 第五步:指定输出所有属性到输出流
            properties.list(System.out);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            try {
                in.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }

示例2:利用Properties类添加key-val到新文件mysql2.properties中

       public static void  main(String[] args) {
            //第一步:创建Properties配置类
           Properties properties = new Properties();
           OutputStream out = null;
            //第二步:设置要写入/修改的key-val
           properties.setProperty("localhost","3306");
            properties.setProperty("password", "13132131");
            try {
                //第三步:指定写入的配置文件路径
                String currentDir = System.getProperty("user.dir");
                out = new FileOutputStream("mysql2.properties");// 该文件写入的位置是 工作目录\\mysql2.properties
                //第四步:加载配置文件
                properties.store(out, null);
                System.out.println("修改配置文件成功!");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                System.out.println("修改配置文件失败!");
                e.printStackTrace();
            }
       }
  • 写入的中文注释,会变成对应的unicode码

示例3:利用Properties类完成对mysql.properties的读取,并修改某个key-val

【注意】Properties配置类,只能通过覆盖原先文件的所有内容,去修改单个key值

    public static void main(String[] args) throws IOException {
        //1、创建Properties对象
        Properties properties = new Properties();
​
        //2、加载指定配置文件
        //注意:1.这里的Test.class,你在哪个类中就写这个类的名字
        //2.test.properties实际要读哪个文件就改成哪个文件名
        String currentDir = System.getProperty("user.dir");
        properties.load(new FileInputStream(currentDir+"\\src\\io\\Properties\\mysql2.properties"));
​
        //创建
        //1.如果该文件没有key就是创建
        //2.如果该文件有key,就是修改
        properties.setProperty("name", "liuri");
        properties.setProperty("sex", "woman");
​
        //将k-v存储在文件中即可
        properties.store(new FileOutputStream("test.properties"), // 该文件写入的位置是 工作目录\\test2.properties
                "注释,用来解释说明保存的文件是做什么用的,不能使用中文,会产生乱码,默认是Unicode编码,一般使用“”空字符串");
        System.out.println("保存配置文件成功~");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

邓六日

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值