Properties是Hashtable类的子类(这里注意,Hashtable的t是小写,这个类是JDK1.0就有了的,而java的命名规范是从2.0才开始的),是唯一一个能直接和IO流结合使用的集合类。该集合类可以直接从文件读取数据到集合中,也可以直接把集合中的数据写入到文件中。一般适用于操作配置文件。使用它时先要import java.util.Properties;。
配置文件key和value之间用冒号[:]和等于号[=]都是可以的.
使用load方法读取之后直接映射成map
主要有如下方法:
load(); //读取
store(); //写
getProperty(); //根据键获取值
setProperty(); //修改对应键的值
The Properties class represents a persistent set of properties. The Properties can be saved to a stream or loaded from a stream. Each key and its corresponding value in the property list is a string.
键值对只能保存字符串
两个构造方法:
Properties()
Creates an empty property list with no default values.
Properties(Properties defaults)
Creates an empty property list with the specified defaults.
PropertiesDemo.java
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Properties;
public class PropertiesDemo {
public static void main(String[] args) throws Exception {
//创建Properties类的对象
Properties pp = new Properties();
//从文件中读取数据
pp.load(new FileInputStream("config.properties"));
//打印pp对象
System.out.println(pp);
//根据键获取值
Object obj = pp.get("name");
System.out.println(obj);
String name = pp.getProperty("name");
String call = pp.getProperty("call");
String qq = pp.getProperty("qq");
System.out.println("name " + name);
System.out.println("call " + call);
System.out.println("qq " + qq);
//修改元素(键值对)的值
pp.setProperty("name", "anxiaohong");
pp.setProperty("qq", "123456789");
//修改后的pp
System.out.println(pp);
//把修改后的文件写入到文件当中,没有这个文件的话会新建一个文件,第二个参数是一个string作为描述
//写完的文件头会加一个时间,时间上边是描述的字符串,如果第二个参数是null,就只加一个时间
//以#号开头,注释
pp.store(new FileOutputStream("abc.txt"), "hello");
//对map进行遍历
Set<Object> set = pp.keySet();
for(Object o: set) {
System.out.println(o+"---"+pp.getProperty(o.toString()));
}
}
}
config.properties
name = anhong
call = 123456
qq : 456789
abc.txt
#hello
#Fri Nov 17 20:32:48 CST 2017
qq=123456789
name=anxiaohong
call=123456