import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Enumeration;
import java.util.Properties;
public class PropertiesUtil {
private String filename = "e:/temp/config.properties";
// private String filename = "config.properties";
private Properties p;
private FileInputStream in;
private FileOutputStream out;
public PropertiesUtil() {
File file = new File(filename);
try {
in = new FileInputStream(file);
p = new Properties();
p.load(in);
in.close();
} catch (FileNotFoundException e) {
System.err.println("配置文件config.properties找不到!");
e.printStackTrace();
} catch (IOException e) {
System.err.println("读取配置文件config.properties错误!");
e.printStackTrace();
}
}
public String getValue(String itemName) {
return p.getProperty(itemName);
}
public String getValue(String itemName, String defaultValue) {
return p.getProperty(itemName, defaultValue);
}
public void setValue(String itemName, String value) {
p.setProperty(itemName, value);
}
public void saveFile(String filename, String description) throws Exception {
try {
File f = new File(filename);
out = new FileOutputStream(f);
p.store(out, description);
out.close();
} catch (IOException ex) {
throw new Exception("无法保存指定的配置文件:" + filename);
}
}
public void getNameValuePair() {
Enumeration enumKeys= p.keys();
while(enumKeys.hasMoreElements()) {
String key= (String)enumKeys.nextElement();
try {
//p.getProperty(key)本身解析的时候可能已经做过一次转码转码方式可能就是ISO8859-1所以得先通过这种转码过来
System.out.println(key+"--->"+new String(p.getProperty(key).getBytes("ISO8859-1"), "gbk"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
public void saveFile(String filename) throws Exception {
saveFile(filename, "");
}
public void saveFile() throws Exception {
if (filename.length() == 0)
throw new Exception("需指定保存的配置文件名");
saveFile(filename);
}
public void deleteValue(String value) {
p.remove(value);
}
public static void main(String[] A) {
PropertiesUtil propertiesUtil = new PropertiesUtil();
propertiesUtil.getNameValuePair();
}
}
//另外有人说properties文件的写法:name=value还有人说name:value有人说只能是其中一种其实都行properties源码有解释。