一般的,对于一个稍有规模的软件,总会有它的配置数据(或者也称初始化数据),每当该软件启动时就从外部文件资源中读取相应的初始化数据。在Windows系统中用C++或C#来开发软件时,可以调用相应的API来操作注册表或INI文件来实现此功能。在java中,java.util.Properties类便扮演了此功能的角色,它继承自java.util.Hashtable<Object,Object>类,下面先列举该类几个有用的成员函数。
Enumeration<?> propertyNames() 返回属性列表中所有键的枚举,如果在主属性列表中未找到同名的键,则包括默认属性列表中不同的键。
Object setProperty(String key, String value) 设置(属性,属性值)对,调用 Hashtable 的方法 put。
String getProperty(String key) 用指定的键在此属性列表中搜索属性。
void store(OutputStream out, String comments) 以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。
void load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。
void storeToXML(OutputStream os, String comment) 发出一个表示此表中包含的所有属性的 XML 文档。
void void loadFromXML(InputStream in) 将指定输入流中由 XML 文档所表示的所有属性加载到此属性表中。
一般情况下只需要这几个就够了,个人比较喜欢使用loadFromXML和storeToXML组合,更多成员函数可查看java文档。
下面的代码演示了它的使用。。。
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
public class PropertiesDemo {
final private String APP_NAME="appName"; //系统名称属性
final private String DEVELOPER="developer"; //系统开发者属性
private String appName; //系统名称属性值
private String developer; //系统开发者属性值
public PropertiesDemo()
{
}
public PropertiesDemo(String appName,String developer)
{
this.appName=appName;
this.developer=developer;
}
public String getAppName() {
return appName;
}
public void setAppName(String appName) {
this.appName = appName;
}
public String getDeveloper() {
return developer;
}
public void setDeveloper(String developer) {
this.developer = developer;
}
//载入系统配置数据
public void loadData() throws IOException
{
Properties p=new Properties();
FileInputStream appconfig=new FileInputStream("appconfig.xml");
p.loadFromXML(appconfig);
this.appName=p.getProperty(this.APP_NAME);
this.developer=p.getProperty(this.DEVELOPER);
appconfig.close();
}
//保存系统配置数据
public void storeData() throws IOException
{
Properties p=new Properties();
p.setProperty(this.APP_NAME, this.appName);
p.setProperty(this.DEVELOPER, this.developer);
FileOutputStream appconfig=new FileOutputStream("appconfig.xml");
p.storeToXML(appconfig, "the application config datas");
}
public static void main(String[] args) {
PropertiesDemo pdStore=new PropertiesDemo("PropertiesDemo","ych");
try {
pdStore.storeData();
} catch (IOException ex) {
System.out.println("保存系统配置数据错误:"+ex);
}
PropertiesDemo pdLoad=new PropertiesDemo();
try {
pdLoad.loadData();
System.out.println("the application name:"+pdLoad.getAppName());
System.out.println("the application developer:"+pdLoad.getDeveloper());
} catch (IOException ex) {
System.out.println("读取系统配置数据错误:"+ex);
}
}
}