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...