JAVA操作properties配置文件

一、简介

<1> java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是"键=值"的格式。

<2> 在properties文件中,可以用"#"来作注释。

二、Java的Properties类

属性映射(property map):是一种存储键/值对的数据结构。属性映射经常被用来存放配置信息。

它有三个特性:

1、键和值斗志字符串
2、键/值对可以很容易地写入文件或从文件读出。
3、用二级表存放默认值

实现属性映射的Java类被称为Properties(Java.util.Properties),此类是Java中比较重要的类,主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。
此类是线程安全的:多个线程可以共享单个 Properties 对象而无需进行外部同步。

三、主要的方法:

1. getProperty ( String key):用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。

2. load ( InputStream inStream):从输入流中读取属性列表(键和元素对)。通过对指定的文件(比如说上面的 test.properties 文件)进行装载来获取该文件中的所有键 - 值对。以供 getProperty ( String key) 来搜索。

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

4. store ( OutputStream out, String comments):以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。与 load 方法相反,该方法将键 - 值对写入到指定的文件中去。

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

因为 Properties 继承于 Hashtable,所以可对== Properties 对象应用 put 和 putAll 方法==。但不建议使用这两个方法,因为它们允许调用者插入其键或值不是 String 的项。相反,应该使用 setProperty 方法。
如果在“不安全”的 Properties 对象(即包含非 String 的键或值)上调用 store 或 save 方法,则该调用将失败。
类似地,如果在“不安全”的 Properties 对象(即包含非 String 的键)上调用 propertyNames 或 list 方法,则该调用将失败。

在试图获得字符串值时制定默认值。(当键值不存在的时候,就会自动时用它)

String title=settings.getProperty("title","Default title");

四、demo

	public static void main(String[] args) throws Exception {
        
        Properties pro = new Properties();
        pro.load(new  FileInputStream("src/resources/conf.properties"));
        // 获取key为userid的value
        String userid = pro.getProperty("userid");
        // 设置key-values
        pro.setProperty("userAge","20");
        // 把设置的key-value保存到本地,其中comments是注释,也会保存到配置文件中第一行。
        pro.store(new FileOutputStream("src/resources/conf.properties"),"1234");

        // enumeration:列举事实,逐条陈述,祥叙
        /*源码
            public Enumeration<?> propertyNames() {
                Hashtable<String,Object> h = new Hashtable<>();
                enumerate(h);
                return h.keys();
            }
        */
        Enumeration<?> enumeration = pro.propertyNames();
        while (enumeration.hasMoreElements()){
            Object o = enumeration.nextElement();
            System.out.println(o);
            String val = pro.getProperty(o.toString());
            System.out.println("-------------------");
            System.out.println(o + "    "+val);
        }
        // 清空配置 调用clear函数就可以。
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值