package com.ruoyi.common.utils; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.util.LinkedHashMap; import java.util.Map; import org.yaml.snakeyaml.DumperOptions; import org.yaml.snakeyaml.Yaml; import com.huaheng.common.utils.StringUtils; /** * 配置处理工具类 * * @author yml */ public class YamlUtil { public static Map<?, ?> loadYaml(String fileName) throws FileNotFoundException { InputStream in = YamlUtil.class.getClassLoader().getResourceAsStream(fileName); return StringUtils.isNotEmpty(fileName) ? (LinkedHashMap<?, ?>) new Yaml().load(in) : null; } public static void dumpYaml(String fileName, Map<?, ?> map) throws IOException { if (StringUtils.isNotEmpty(fileName)) { FileWriter fileWriter = new FileWriter(YamlUtil.class.getResource(fileName).getFile()); DumperOptions options = new DumperOptions(); options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); Yaml yaml = new Yaml(options); yaml.dump(map, fileWriter); } } public static Object getProperty(Map<?, ?> map, Object qualifiedKey) { if (map != null && !map.isEmpty() && qualifiedKey != null) { String input = String.valueOf(qualifiedKey); if (!"".equals(input)) { if (input.contains(".")) { int index = input.indexOf("."); String left = input.substring(0, index); String right = input.substring(index + 1, input.length()); return getProperty((Map<?, ?>) map.get(left), right); } else if (map.containsKey(input)) { return map.get(input); } else { return null; } } } return null; } @SuppressWarnings("unchecked") public static void setProperty(Map<?, ?> map, Object qualifiedKey, Object value) { if (map != null && !map.isEmpty() && qualifiedKey != null) { String input = String.valueOf(qualifiedKey); if (!input.equals("")) { if (input.contains(".")) { int index = input.indexOf("."); String left = input.substring(0, index); String right = input.substring(index + 1, input.length()); setProperty((Map<?, ?>) map.get(left), right, value); } else { ((Map<Object, Object>) map).put(qualifiedKey, value); } } } } }