共计 1997 个字符,预计需要花费 5 分钟才能阅读完成。
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…
正文完