先贴出代码,有空再来写说明。
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class SingleProperty {
private Properties prop = null;
private InputStream in = null;
private OutputStream os;
private String path;
public SingleProperty(String path) {
this.path = path;
initProperty();
}
public SingleProperty() {
prop = new Properties();
}
public void setPath(String path) {
try {
in = new FileInputStream(this.path);
} catch (FileNotFoundException ex) {
}
}
private void initProperty() {
try {
prop = new Properties();
//System.getProperty("user.dir") 获得项目所在位置路径,如 F:\zgh\netbeanspace\ClientTest
//path=conf/config.properties 此位置为项目所在路径下的conf/config.properties文件路径,conf与lib并列
in = new FileInputStream(this.path);
} catch (FileNotFoundException ex) {
}
}
private void setIs() {
try {
if (in == null) {
in = new FileInputStream(this.path);
}
} catch (IOException ex) {
}
}
private void setOs() {
try {
os = new FileOutputStream(this.path); //"src/org/lt/cj/config/config.properties"
} catch (FileNotFoundException ex) {
}
}
//获取所有属性
public Properties getProperty() {
try {
setIs();
prop.load(in);
} catch (IOException ex) {
}
return prop;
}
//获取属性值
public String getValue(String key) {
String value = "";
try {
setIs();
prop.load(in);
value = prop.getProperty(key);
} catch (IOException ex) {
}
return value;
}
//将Map的键值对添加到配置文件,值允许用空字符
public void addProperty(Map<String, String> map, String comments) {
try {
setIs();
prop.load(in);
setOs();
Set keys = map.keySet();
for (Iterator it = keys.iterator(); it.hasNext();) {
String key = (String) it.next();
String value = map.get(key);
prop.setProperty(key, value);
}
prop.store(os, comments);
} catch (IOException ex) {
}
}
//修改属性值
public void setProperty(String key, String value) {
prop.setProperty(key, value);
}
//保存配置文件
public void store(String comments) {
try {
setOs();
prop.store(os, comments);
} catch (IOException ex) {
}
}
//删除key所指向的属性值
public void deleteProperty(String key, String comments) {
try {
setIs();
prop.load(in);
prop.remove(key);
setOs();
prop.store(os, comments);
} catch (IOException ex) {
}
}
//关闭读配置文件的IO
public void endAndcloseIO() {
try {
if (os != null) {
os.flush();
os.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
}
}
//打印配置文件中的所有属性
public void printMap(Map map) {
Set keys = map.keySet();
for (Iterator it = keys.iterator(); it.hasNext();) {
Object key = it.next();
Object value = map.get(key);
System.out.println(key + "==" + value);
}
}
public static void main(String[] args) throws Exception {
SingleProperty p = new SingleProperty("src/com/test/config.properties");
Map<String, String> map = new HashMap<String, String>();
map.put("myParam", "hello");
map.put("parameter2", "Hi,nice to meet you.");
p.addProperty(map, "修改配置参数");
}
}