diff --git a/framework/commons/src/main/java/cd/casic/framework/commons/util/yaml/YamlUtils.java b/framework/commons/src/main/java/cd/casic/framework/commons/util/yaml/YamlUtils.java new file mode 100644 index 0000000..5a945a6 --- /dev/null +++ b/framework/commons/src/main/java/cd/casic/framework/commons/util/yaml/YamlUtils.java @@ -0,0 +1,159 @@ +package cd.casic.framework.commons.util.yaml; + +import lombok.Data; +import org.yaml.snakeyaml.DumperOptions; +import org.yaml.snakeyaml.Yaml; + +import java.io.*; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Set; + +/** + *
TODO
+ * + * @author mian-bin + * @Description YamlUtils + * @date 2025/1/10 15:22 + */ +public class YamlUtils { + private final static DumperOptions OPTIONS = new DumperOptions(); + + private static File file; + + private static InputStream ymlInputSteam; + + private static Object CONFIG_MAP; + + private static Yaml yaml; + + static { + OPTIONS.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK); + } + + /** + * 使用其他方法之前必须调用一次 设置yml的输出文件,当没有设置输入流时可以不设置输入流,默认以此文件读入 + * + * @param file 输出的文件 + */ + public static void setYmlFile(File file) throws FileNotFoundException { + YamlUtils.file = file; + if (ymlInputSteam == null) { + setYmlInputSteam(new FileInputStream(file)); + } + } + + + /** + * 使用其他方法之前必须调用一次 设置yml的输入流 + * + * @param inputSteam 输入流 + */ + public static void setYmlInputSteam(InputStream inputSteam) { + ymlInputSteam = inputSteam; + yaml = new Yaml(OPTIONS); + CONFIG_MAP = yaml.load(ymlInputSteam); + } + + public static void close() { + try { + ymlInputSteam.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** + * 根据键获取值 + * + * @param key 键 + * @return 查询到的值 + */ + @SuppressWarnings("unchecked") + public static Object getByKey(String key) { + if (ymlInputSteam == null) { + return null; + } + String[] keys = key.split("\\."); + Object configMap = CONFIG_MAP; + for (String s : keys) { + if (configMap instanceof Map) { + configMap = ((Map