#关于Properties类
- 它是Hashtable的子类,也就是说它具备map集合的特点,而且它里面存储的键值对都是字符串。
- 存取的方法如下,注意set的两个参数都是String类型:
String getProperty(String key)
Object setProperty(String key, String value)
- 拿键值对不要用Map的keySet()和entrySet()了,它有一个Set< String >stringPropertyNames() 方法,用于返回键集。
- 有直接存储和加载Properties对象的方法store和load(字节流和字符流都适用),还可以用list方法输出(参数为打印流)。
import java.io.*;
import java.util.*;
public class Test {
public static void main(String args[]) throws IOException {
FileWriter fw = new FileWriter("c:\\info.txt");
Properties p1 = new Properties();
p1.setProperty("A", "1");
p1.setProperty("B", "2");
p1.setProperty("C", "3");
p1.store(fw, "D");
fw.close();
p1.list(System.out);
sop("-- ------------------ --");
FileReader fr = new FileReader("c:\\info.txt");
Properties p2 = new Properties();
p2.load(fr);
Set<String> set = p2.stringPropertyNames();
for (String str : set) {
System.out.println(str + " - " + p2.get(str));
}
fr.close();
p2.list(System.out);
sop("-- ------------------ --");
}
public static void sop(Object obj) {
System.out.println(obj.toString());
}
}
-- listing properties --
A=1
C=3
B=2
-- ------------------ --
A - 1
C - 3
B - 2
-- listing properties --
A=1
C=3
B=2
-- ------------------ --
试用软件次数为5次的程序,要注意方法的综合运用:
import java.io.*;
import java.util.*;
public class Test {
public static void main(String args[]) throws IOException {
File file = new File("c:\\info.txt");
if(!file.exists()){
file.createNewFile();
}
FileReader fr = new FileReader(file);
Properties prop = new Properties();
int count = 0;
prop.load(fr);
String value = prop.getProperty("time");
if(value!=null){
count = Integer.parseInt(value);
if(count>=5){
System.out.println("使用次数超过5次,请付费.");
}
}
count++;
prop.setProperty("time", count+"");
FileWriter fw = new FileWriter(file);
prop.store(fw, "");
fr.close();
fw.close();
}
}