用final关键字,主要是防止PropertiesUtil 被继承而污染了(你懂的!)
public final class PropertiesUtil {
// 根据key读取value
private static String path;
static Properties props;
static {//静态块 初始化
props = new Properties();
path = PropertiesUtil.class.getClassLoader().getResource("")
+ "/ac.properties";
File file;
try {
file = new File(new URI(path));
if (!file.exists()) {//配置文件找不到,就创建
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (URISyntaxException e1) {
e1.printStackTrace();
}
}
public static String readValue(String key) {
try {
InputStream in = new BufferedInputStream(new FileInputStream(
new File(new URI(path))));
props.load(in);
String value = props.getProperty(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
// 写入properties信息
public static void writeProperties(String parameterName,
String parameterValue) {
try {
OutputStream ops = new FileOutputStream(new File(new URI(path)));
props.setProperty(parameterName, parameterValue);
props.store(ops, "set");
} catch (IOException e) {
Log.error("Visit " + " for updating " + parameterName
+ " value error");
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
//测试
public static void main(String[] args) {
readValue("age");
writeProperties("f", "22");
writeProperties("f2", "22");
Log.info("OK");
}
}