一,概述
java.util.Properties 集合 extends Hashtable<k,v> implements Map<k,v>。Properties 类表示了一个持久的属性集,Properties可保存在流中或从流中加载。
Properties 集合是一个唯一与IO流相结合的集合。可使用Properties集合中的store方法,把集合中的临时数据,持久化写入到硬盘中存储;可使用Properties集合中的load方法,把硬盘保存的文件(键值对),读取到集合中使用。
属性列表中每个键及所对应的值都是一个字符串。Properties集合是一个双列集合,key和value默认都是字符串。
二,Properties操作字符串的方法
1,Object setProperty(String key, String value):调用Hashtable的put方法。
2,String getProperty(String key):通过key获取value值。
3,Set<String> StringPropertyNames():返回此属性列表中的属性集,相当于Map方法中的keySet方法。
private static void show1() {
Properties prop = new Properties();
prop.setProperty("张颖","25");
prop.setProperty("陈颖","21");
prop.setProperty("李颖","23");
String val1 = prop.getProperty("李颖");
System.out.println(val1);//23
Set<String> keys = prop.stringPropertyNames();
for (String key : keys) {
String val = prop.getProperty(key);
System.out.println(key+":"+val);
}
/*
李颖:23
张颖:25
陈颖:21
*/
}
三,Properties中的store和load方法
1,void store(OutputStream out, String comments)
void store(Writer writer, String comments)
参数:
OutputStream out:字节输出流,不能写入中文;
Writer writer:字符输出流,可写入中文;
String comments:注释,解释说明文件作用,不可使用中文,会产生乱码,默认是Unicode编码,一般用“”空字符串。
private static void show2() throws IOException {
Properties prop = new Properties();
prop.setProperty("张颖","25");
prop.setProperty("陈颖","21");
prop.setProperty("李颖","23");
FileWriter fw = new FileWriter("src\\Month_05\\day5_18\\a.txt");
prop.store(fw,"sava data");
fw.close();
/*
#sava data
#Mon May 18 11:57:26 CST 2020
李颖=23
张颖=25
陈颖=21
*/
}
2,void load(InputStream inStream)
void load(Reader reader)
参数:
OutputStream out:字节输出流,不能写入中文;
Writer writer:字符输出流,可写入中文;
load方法使用步骤:
1,创建Properties集合对象;
2,使用load方法读取保存键值对的文件;
3,使用stringPropertyNames方法遍历集合。
private static void show3() throws IOException {
Properties prop = new Properties();
FileReader fr = new FileReader("src\\Month_05\\day5_18\\a.txt");
prop.load(fr);
Set<String> set = prop.stringPropertyNames();
for (String key : set) {
String val = prop.getProperty(key);
System.out.println(key+"="+val);
}
fr.close();
/*
李颖=23
张颖=25
陈颖=21
*/
}