Properties类常用方法详解
Properties继承自Hashtable,也是map集合的一种,具有Map集合的常用方法,但是Properties的键值对都是String类型,Properties可以操作properties文件,因此,Properties集合和properties文件经常搭配使用
准备工作
准备一个user.properties空文件
准备一个user.xml文件,有方法要使用到
构造器方法
-
public Properties()
默认构造
-
public Properties(Properties defaults)
传入一个Properties对象,构造出来的Properties对象和传入的Properties对象完全一样,包括在虚拟机上的内存地址,属于浅拷贝
1 |
|
1 |
|
setProperty
添加键值对到Properties集合中去,这个方法是线程安全的
public synchronized Object setProperty(String key, String value)
1 |
|
getProperty
从Properties集合中取出键对应的值,有两种重载形式
-
public String getProperty(String key)
如果该键key在Properties集合中不存在,取出的值就是null
-
public String getProperty(String key, String defaultValue)
如果该键key在Properties集合中不存在,取出的值就是defaultValue
1 |
|
list
将数据显示到指定设备
有两种重载形式
-
public void list(PrintStream out)
将数据传输到PrintStream及其子类中去
-
public void list(PrintWriter out)
将数据传输到PrintWriter及其子类中去
1 |
|
propertyNames
返回Properties集合类中所有的key的枚举Enumeration
public Enumeration<?> propertyNames()
1 |
|
stringPropertyNames
返回Properties集合类中所有的key的Set<String>
集合
public Set<String> stringPropertyNames()
1 |
|
store
将Properties集合中的键值对存到properties配置文件中,原来文件的内容会覆盖还是追加取决于输出流的输出方式
有两种重载形式
-
public void store(Writer writer, String comments)
传入Writer对象或其子类对象,comments表示添加对应的注释到配置文件中
-
public void store(OutputStream out, String comments)
传入Writer对象或其子类对象,comments表示添加对应的注释到配置文件中
1 |
|
结果
load
加载properties配置文件,将配置文件的所有键值对存放到Properties集合中
有两种重载形式
-
public synchronized void load(Reader reader) throws IOException
这个传入的是Reader对象或其子类对象
-
public synchronized void load(InputStream inStream) throws IOException
这个传入的是InputStream对象或其子类对象
1 |
|
storeToXML
将Properties集合转存为XML文件,有两种重载形式
-
public void storeToXML(OutputStream os, String comment)
使用默认编码格式
UTF-8
存储 -
public void storeToXML(OutputStream os, String comment, String encoding)
指定编码格式存储
1 |
|
结果
`
loadFromXML
加载XML配置文件中的键值对到Properties集合中
public synchronized void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException
Properties properties = new Properties();
// 加载user.xml配置文件
properties.loadFromXML(Files.newInputStream(Paths.get("E:\\user.xml")));
// 取出属性
System.out.println(properties.getProperty("name"));
System.out.println(properties.getProperty("age"));
// 输出结果:
// jack
// 18