packagecom.hsuchan.business.utils;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.net.URL;importjava.util.Properties;importorg.apache.log4j.Logger;/*** Java属性文件操作工具类
*
由于每个人的需求不一样,所以本工具只提供常用的功能(包括根据键名获取键值,根据键名修改键值),
* 如果不满足,自个完全可以修改,在本工具类中,我们假设属性文件已经存在,并且文件中已经存在我们要操作的key
*@author@versionv1.0.0 2015-06-19*/
public classPropertiesUtil {private static Properties properties= newProperties();private static Logger logger = Logger.getLogger(PropertiesUtil.class);/**测试用 属性文件名*/
private static final String PROPERTIES_FILE_PATH="/config.properties";/**测试用 操作的键名*/
private static final String KEY_NAME="content";/*** 初始化properties
*@parampath 属性文件路径,如:/config.properties*/
private static voidinitProperties(String path) {try{
InputStream ipsm= PropertiesUtil.class.getResourceAsStream(path);
properties.load(ipsm);
ipsm.close();
}catch(IOException e) {
logger.error(e.getMessage());
}
}/*** 根据键名key获取属性文件中对应的键值
*@parampath 属性文件路径,如:/config.properties
*@paramkey 属性文件 键名
*@return
*/
public staticString getValueByKey(String path,String key){//如果properties为空,则初始化
if(properties.isEmpty())
initProperties(path);returnproperties.getProperty(key);
}/*** 通过键名key修改其对应的值为value
*@parampath 属性文件路径,如:/config.properties
*@paramkey 属性文件 键名
*@paramvalue 属性文件 键值*/
public static voidmodifyValueByKey(String path,String key,String value) {//如果properties为空,则初始化
if(properties.isEmpty())
initProperties(path);//修改值
properties.setProperty(key, value);try{//获取文件路径
URL url = PropertiesUtil.class.getResource(path);
FileOutputStream fos= new FileOutputStream(newFile(url.toURI()));//保存到文件
properties.store(fos, "modify the value of key");
fos.close();
}catch(Exception e) {
logger.error(e.getMessage());
}
}/*** 测试
*@paramargs*/
public static voidmain(String[] args) {//取值示例
System.out.println("修改前:"+getValueByKey(PROPERTIES_FILE_PATH,KEY_NAME));//修改示例
modifyValueByKey(PROPERTIES_FILE_PATH,KEY_NAME,"3333311s");//取值示例
System.out.println("修改后:"+getValueByKey(PROPERTIES_FILE_PATH,KEY_NAME));
}
}