import org.springframework.context.annotation.Profile;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
/**
* 形容: 配置文件工具类
*
* @author pengjie_yao
* @date 2019/9/9 15:16
*/
public class PropertiesUtils {
/**
* 传递键值对的Map,更新properties文件
* @param fileName 文件名(放在resource源包目录下),须要后缀
* @param keyValueMap 键值对Map
*/
public static void updateProperties(String fileName, Map<String, String> keyValueMap) throws Exception {
//获取文件门路
String filePath = Profile.class.getClassLoader().getResource(fileName).toURI().getPath();
System.out.println("propertiesPath:" + filePath);
Properties props = new Properties();
BufferedReader br = null;
BufferedWriter bw = null;
try {
// 从输出流中读取属性列表(键和元素对)
br = new BufferedReader(new InputStreamReader(new FileInputStream(filePath)));
props.load(br);
br.close();
// 写入属性文件
bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(filePath)));
// 清空旧的文件
// props.clear();
for (String key : keyValueMap.keySet()) {
props.setProperty(key, keyValueMap.get(key));
System.out.println("配置文件中要进行批改的key为:"+key);
System.out.println("批改后的数据为:"+keyValueMap.get(key));
}
props.store(bw, "扭转数据");
bw.close();
} catch (IOException e) {
e.printStackTrace();
System.err.println("Visit " + filePath + " for updating " + "" + " value error");
} finally {
try {
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* @Title: getProfileByClassLoader
* @Description: 采纳ClassLoader(类加载器)形式进行读取配置信息
* @return Map<String,Object> 以Map键值对形式返回配置文件内容
* @param fileName 配置文件名称
* 长处:能够在非Web利用中读取配置资源信息,能够读取任意的资源文件信息
* 毛病:只能加载类classes上面的资源文件
*/
public static Map<String, Object> getProfileByClassLoader(String fileName) {
// 通过ClassLoader获取到文件输出流对象
InputStream in = Profile.class.getClassLoader().getResourceAsStream(fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
Properties props = new Properties();
Map<String, Object> profileMap = new HashMap<String, Object>();
try {
props.load(reader);
for (Object key : props.keySet()) {
profileMap.put(key.toString(), props.getProperty(key.toString()));
}
} catch (IOException e) {
e.printStackTrace();
}
return profileMap;
}
}
参考链接:
https://github.com/f763180872…
发表回复