Java Properties类

1 什么是Java Properties类

Properties对象包含key-value对,key和value都必须是字符串类型。java.util.Properties类是Hashtable的子类。

它可以用于基于属性键获取属性值。Properties类提供了从properties属性文件中获取数据并将数据存储到属性文件中的方法。而且,Properties也可以用来获取系统的属性。

2 Java Properties的优点

如果properties属性文件更改了信息,则Java类无需重新编译。

3 Java Properties的构造方法

构造方法 描述
Properties() 创建一个没有默认值的空属性列表。
Properties(Properties defaults) 使用指定的默认值创建一个空的属性列表。

4 Java Properties的方法

方法 描述
public void load(Reader r) 从Reader对象加载数据。
public void load(InputStream is) 从InputStream对象加载数据
public void loadFromXML(InputStream in) 用于将指定输入流上XML文档表示的所有属性加载到此属性表中。
public String getProperty(String key) 根据键返回值。
public String getProperty(String key, String defaultValue) 使用指定的键搜索属性。
public void setProperty(String key, String value) 调用Hashtable的put方法。
public void list(PrintStream out) 用于将属性列表打印到指定的输出流。
public void list(PrintWriter out) 用于将属性列表打印到指定的输出流。
public Enumeration<?> propertyNames() 返回属性列表中所有键的枚举。
public Set<String> stringPropertyNames() 从属性列表中返回一组键,其中键及其对应的值为字符串。
public void store(Writer w, String comment) 将属性写入writer对象。
public void store(OutputStream os, String comment) 将属性写入OutputStream对象。
public void storeToXML(OutputStream os, String comment) 将属性写入writer对象以生成XML文档。
public void storeToXML(Writer w, String comment, String encoding) 将属性写入writer对象,以使用指定的编码生成XML文档。

5 读取properties文件的例子

5.1 db.properties

要从属性文件中获取信息,在resources目录下创建db.properties

内容如下:

user=root  
password=123456

5.2 Demo.java

让我们创建Java类来从属性文件中读取数据。

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 *  Java Properties的例子
 */
import java.util.*;
import java.io.*;

public class Demo {

    public static void main(String[] args)throws Exception{
        Properties prop=new Properties();

        ClassLoader classLoader = Demo.class.getClassLoader();
        InputStream in = classLoader.getResourceAsStream("db.properties");// 读取属性文件db.properties
        prop.load(in); /// 加载属性列表

        System.out.println(prop.getProperty("user"));
        System.out.println(prop.getProperty("password"));
    }
}

5.3 输出结果

执行Demo类,结果为:

root  
123456

6 读取所有系统属性的例子

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 *  Java Properties的例子
 */
import java.util.*;
import java.io.*;

public class Demo {

    public static void main(String[] args)throws Exception{

        Properties p=System.getProperties();
        Set set=p.entrySet();

        Iterator itr=set.iterator();
        while(itr.hasNext()){
            Map.Entry entry=(Map.Entry)itr.next();
            System.out.println(entry.getKey()+" = "+entry.getValue());
        }

    }
}

输出结果为:

java.runtime.name = Java(TM) SE Runtime Environment
sun.boot.library.path = C:\Program Files\Java\jdk1.8.0_31\jre\bin
java.vm.version = 25.31-b07
java.vm.vendor = Oracle Corporation
java.vendor.url = http://java.oracle.com/
path.separator = ;
java.vm.name = Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg = sun.io
user.country = CN
user.script = 
sun.java.launcher = SUN_STANDARD
sun.os.patch.level = 
java.vm.specification.name = Java Virtual Machine Specification
......

7 创建properties文件的例子

7.1 Demo.java

package com.yiidian;

/**
 * 一点教程网: http://www.yiidian.com
 */
/**
 *  Java Properties的例子
 */
import java.util.*;
import java.io.*;
public class Demo {
    public static void main(String[] args)throws Exception{

        Properties p=new Properties();
        p.setProperty("name","eric");
        p.setProperty("email","eric@yiidian.com");

        p.store(new FileWriter("info.properties"),"Yiidian Properties Example");

    }
}

7.2 info.properties

查看项目根目录下是否生成info.properties文件


内容如下:

#Yiidian Properties Example
#Fri Apr 24 11:31:00 CST 2020
email=eric@yiidian.com
name=eric

 

推荐好课