最近项目中遇到一个问题,项目中有多个properties文件时获取指定properties文件中的值,并且可以修改指定properties中的值
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.URLDecoder;
import java.util.Properties;
import org.apache.logging.log4j.util.PropertiesUtil;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
public class PropKit {
public static Properties getProperties(String propFile) {
try {
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
Properties pro = new Properties();
FileInputStream in = new FileInputStream(path+"/"+propFile);
pro.load(in);
in.close();
return pro;
}catch (Exception e) {
e.printStackTrace();
}
return null;
}
/***
* 动态获取配置文件内容不需要重启服务器
* @param proFileName 配置文件名称
* @param proKey 配置文件key值
* @return 返回对应key的值
*/
public static String getProperties(String proFileName,String proKey) {
String retKeyVal = "";
try {
retKeyVal = PropertiesLoaderUtils.loadAllProperties(proFileName).get(proKey).toString();
} catch (IOException e) {
e.printStackTrace();
}
return retKeyVal;
}
/***
* 动态修改配置文件并返回修改值
* @param fileName
* @param key
* @param value
* @return value
*/
public static String updateProperties(String fileName,String key,String value) {
try {
String filePath = PropertiesUtil.class.getClassLoader().getResource(fileName).getFile();
filePath = URLDecoder.decode(filePath, "utf-8");
Properties props = PropertiesLoaderUtils.loadProperties(new ClassPathResource(fileName));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
props.setProperty(key, value);
props.store(bw, "");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return value;
}
}
通过注解的方式获取
import org.springframework.beans.factory.annotation.Value;
@Value("${demo.name}")
private String name;
版权声明:本文为zhouyingxiong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。