文章目录
Properties 类
这两个方法我还不会用(后续学习后再补上):
void list(PrintStream streamOut)
将属性列表输出到指定的输出流。
void list(PrintWriter streamOut)
将属性列表输出到指定的输出流。
-
roperties 继承于 Hashtable.表示一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。
-
Properties类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。
定义如下实例变量
- 这个变量持有一个Properties对象相关的默认属性列表。
Properties defaults;
构造:
Properties()
Properties(Properties propDefault)
两种情况下,属性列表都为空
创建一个带有指定默认值的空属性列表。
在这种情况下,会出现2个属性列表,这个就是那个默认的属性列表了!如果找不到,会返回默认属性,如果没有默认属性就返回null
String getProperty(String key)
//用指定的键在此属性列表中搜索属性。
String getProperty(String key, String defaultProperty)
//用指定的键在属性列表中搜索属性。
Object setProperty(String key, String value)
调用 Hashtable 的方法 put
以下代码为更好理解属性类方法的使用:
import java.util.*;
public class PropTest{
public static void main(String[] args){
Properties p = new Properties();
String str;
Set states;
p.put("gyy1","qq");
p.put("gyy2","ww");
p.put("gyy3","ee");
p.put("gyy4","tt");
System.out.println(p);
System.out.println(p.keySet());
states = p.keySet();//集合
Iterator itr = states.iterator();//集合的迭代器
while(itr.hasNext()){
str = (String)itr.next();
System.out.println(str);
System.out.println(p.getProperty(str));
if("gyy1".equals(str)){
System.out.println("---remove---");
System.out.println(p.remove(str));
}
}
System.out.println(p.toString());
System.out.println("-------");
String str2;
str2 = p.getProperty("gyy5","yy");
str = p.getProperty("gyy4","rr");
/*方法将搜索具有此属性列表中指定键的属性值。
*如果在属性列表中,默认属性列表及其默认值找到该键,递归,
* 然后检查。如果未找到该属性的方法返回默认值参数。
*/
p.setProperty("gyy6","rr");
System.out.println(str);//tt
System.out.println(str2);//yy
System.out.println(p);
}
}
以下代码将属性类方法与File类结合进行文件的读取写入,并考虑了中文乱码,加入“utf-8”编码格式:
import java.util.*;
import java.io.*;
public class PropTest{
public static void main(String[] args)throws IOException{
Properties p = new Properties();
String str;
Set states;
p.put("gyy1","qq");
p.put("gyy2","ww");
p.put("gyy3","ee");
p.put("gyy4","tt");
System.out.println(p);
System.out.println(p.keySet());
states = p.keySet();//集合
Iterator itr = states.iterator();//集合的迭代器
while(itr.hasNext()){
str = (String)itr.next();
System.out.println(str);
System.out.println(p.getProperty(str));
if("gyy1".equals(str)){
System.out.println("---remove---");
System.out.println(p.remove(str));
}
}
System.out.println(p.toString());
System.out.println("-------");
String str2;
str2 = p.getProperty("gyy5","yy");
str = p.getProperty("gyy4","rr");
/*方法将搜索具有此属性列表中指定键的属性值。
*如果在属性列表中,默认属性列表及其默认值找到该键,
*递归,然后检查。如果未找到该属性的方法返回默认值参数。
*/
p.setProperty("gyy6","rr");
System.out.println(str);//tt
System.out.println(str2);//yy
System.out.println(p);
Enumeration e3;
String str3;
File f = new File("property.txt");//创建文件
OutputStream ff = new FileOutputStream(f);
OutputStreamWriter w = new OutputStreamWriter(ff,"UTF-8");
p.store(w,"jj");
w.close();
ff.close();
Properties p2 = new Properties();
InputStream ii = new FileInputStream("property.txt");
InputStreamReader r = new InputStreamReader(ii,"UTF-8");
p2.load(r);
e3 = p2.propertyNames();
System.out.println(p2);
while(e3.hasMoreElements()){
str3 =(String) e3.nextElement();
System.out.println(str3+"="+p2.getProperty(str3)+", ");
}
System.out.println(p2.getProperty("gyy4"));
r.close();
ii.close();
}
}