最近空闲时间整理一下平时常用的一下工具类,重复造*实在是浪费时间,如果不正确或者有待改善的地方,欢迎指教...
package com.hsuchan.business.utils; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import org.apache.log4j.Logger; /**
* Java属性文件操作工具类
* <p>由于每个人的需求不一样,所以本工具只提供常用的功能(包括根据键名获取键值,根据键名修改键值),
* 如果不满足,自个完全可以修改,在本工具类中,我们假设属性文件已经存在,并且文件中已经存在我们要操作的key</p>
* @authorHsuChan
* @version v1.0.0 2015-06-19
*/
public class PropertiesUtil {
private static Properties properties= new Properties();
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
* @param path 属性文件路径,如:/config.properties
*/
private static void initProperties(String path) { try {
InputStream ipsm = PropertiesUtil.class.getResourceAsStream(path);
properties.load(ipsm);
ipsm.close();
} catch (IOException e) {
logger.error(e.getMessage());
}
} /**
* 根据键名key获取属性文件中对应的键值
* @param path 属性文件路径,如:/config.properties
* @param key 属性文件 键名
* @return
*/
public static String getValueByKey(String path,String key){
//如果properties为空,则初始化
if(properties.isEmpty())
initProperties(path);
return properties.getProperty(key);
} /**
* 通过键名key修改其对应的值为value
* @param path 属性文件路径,如:/config.properties
* @param key 属性文件 键名
* @param value 属性文件 键值
*/
public static void modifyValueByKey(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(new File(url.toURI()));
//保存到文件
properties.store(fos, "modify the value of key");
fos.close();
} catch (Exception e) {
logger.error(e.getMessage());
}
} /**
* 测试
* @param args
*/
public static void main(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)); }
}
转载请注明出处,谢谢。