Java—Properties集合
一、Properties类
特点:
1. Hashtable的子类,map集合中的方法都可以用。
2. 该集合没有泛型。键值都是字符串。
3. 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
4. 有和流技术相结合的方法。
二、代码演示
/*
* Properties集合,它是唯一一个能与IO流交互的集合
*
* 需求:向Properties集合中添加元素,并遍历
*
* 方法:
* public Object setProperty(String key, String value)调用 Hashtable 的方法 put。
* public Set<String> stringPropertyNames()返回此属性列表中的键集,
* public String getProperty(String key)用指定的键在此属性列表中搜索属性
*/
public class PropertiesDemo01 {
public static void main(String[] args) {
// 创建集合对象
Properties prop = new Properties();
// 添加元素
prop.setProperty("周迅", "张学友");
prop.setProperty("李小璐", "贾乃亮");
prop.setProperty("杨幂", "刘恺威");
// 遍历集合
Set<String> keys = prop.stringPropertyNames();
for(String key: keys){
String value = prop.getProperty(key);
System.out.println(key + "=" + value);
}
Set<Entry<Object, Object>> entrySet = prop.entrySet();
for (Entry<Object, Object> entry : entrySet) {
System.out.println(entry.getKey() + "=" + entry.getValue());
}
}
}
三、将集合中内容存储到文件
public class PropertiesDemo02 {
/*
* 需求:使用Properties集合,完成把集合内容存储到IO流所对应文件中的操作
* 分析:
* 1,创建Properties集合
* 2,添加元素到集合
* 3,创建流
* 4,把集合中的数据存储到流所对应的文件中
* stroe(Writer,comments)
* store(OutputStream,commonts)
* 把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
* 5,关闭流
*/
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
prop.setProperty("周迅", "张学友");
prop.setProperty("李小璐", "贾乃亮");
prop.setProperty("杨幂", "刘恺威");
Writer writer = new FileWriter("person.properties");
prop.store(writer, "save data");
writer.close();
}
}
四、 读取文件中的数据,并保存到集合
public class PropertiesDemo03 {
/*
* 需求:从属性集文件prop.properties 中取出数据,保存到集合中
* 分析:
* 1,创建集合
* 2,创建流对象
* 3,把流所对应文件中的数据 读取到集合中
* load(InputStream) 把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
* load(Reader)
* 4,关闭流
* 5,显示集合中的数据
*/
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
File file = new File("person.properties");
System.out.println(file.getAbsolutePath());//获取所在的路径
Reader reader = new FileReader(file);
prop.load(reader);
reader.close();
System.out.println(prop);
}
}
注:load() & store() 中的参数要使用同一个类型的流;InputStream对OutputStream,Reader对Writer;否则输出的数据可能是乱码