除了序列化将文件持久的存储在硬盘中或者在网络中传输,还有一个来表达持久的词汇,那就是Properties。Properties是什么?在哪里用于持久化操作?它可以帮助我做什么?
查看文档可以看出:
Public class Properties extends Hashtable<object,object>继承hashtable,实现的事map接口,所以它是一个map集合类。可以保存到流中或者在流中加载。
先看Properties作为集合使用:
public class PropertiesTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
//创建集合,不能使用泛型
Properties pt = new Properties();
pt.put("Student1","郭襄");
pt.put("Student2", "郭晶晶");
pt.put("Student3", "郭刚堂");
//遍历集合,
Set<Object> keySet = pt.keySet(); //没有使用泛型,所以这里使用Object类型
for(Object key: keySet){
Object value = pt.get(key);
System.out.println(key+","+value);
}
}
输出结果为:
Student1,郭襄
Student3,郭刚堂
Student2,郭晶晶
接下来,再看一下properties的方法:
public String getProperty(String key) 使用此属性列表中指定的键搜索属性。
public Object setProperty(String key,String value) 该属性列表中指定键的上一个值,如果没有, null 。
public Set<String> stringPropertyNames() 返回该属性列表中的一个不可修改的键集,其中键及其对应的值是字符串,包括默认属性列表中的键。
public class PropertiesTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 创建集合,不能使用泛型
Properties pt = new Properties();
pt.put("Student1", "郭襄");
pt.put("Student2", "郭晶晶");
pt.put("Student3", "郭刚堂");
String s1 = pt.getProperty("Student1");
System.out.println(s1); // 郭襄
pt.setProperty("Student4", "王源");
pt.setProperty("Student5", "王凯");
Set<String> set = pt.stringPropertyNames();
for (String s : set) {
String value = pt.getProperty(s);
System.out.println(s + "," + value);
/*
* 输出结果为: Student1,郭襄 Student5,王凯 Student4,王源 Student3,郭刚堂
* Student2,郭晶晶
*/
}
}
Properties与IO流结合使用:
public class PropertiesAndIO {
public static void main(String[] args) throws IOException {
// TODO Auto-generatedmethod stub
// 把集合中的数据保存到文件
myStore();
// 把文件中的数据加载到集合
myLoad();
}
private static void myLoad() throws IOException {
// 创建集合对象
Properties pt = new Properties();
FileReader fr = new FileReader("fw.txt");
pt.load(fr);
Set<String> keys = pt.stringPropertyNames();
for (String key : keys) {
System.out.println(key + "," + pt.getProperty(key));
}
fr.close();
}
private static void myStore() throws IOException {
// 首先创建集合
Properties pt = new Properties();
pt.setProperty("Student1", "王源");
pt.setProperty("Student2", "王凯");
// 把集合中数据保存到文件呢
FileWriter fw = new FileWriter("fw.txt");
pt.store(fw, null);
fw.close();
}
}