最近项目中遇到一个问题,项目中有多个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;
}
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;
}
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) {
e.printStackTrace();
}
return value;
}
}
通过注解的方式获取
import org.springframework.beans.factory.annotation.Value;
@Value("${demo.name}")
private String name;