hunan961
湖南第一帅
采纳率0%
2020-07-31 17:58 阅读 596

Java修改yaml文件如何操作注释

例如有一个文件:a.yml

hzero:
  oauth:
    login:
      # 登录页面模板 main/slide
      default-template: main

我想在java中读出来,做添加配置或者删除配置,然后重新写到b.yml中
比如加一个配置,配置是这样存的:
hzero.oauth.login.username: wlg
加完后存到b.yml中,
希望是如下样式:

hzero:
  oauth:
    login:
      # 登录页面模板 main/slide
      default-template: main
      username: wlg

现在我使用的是snakeyaml操作的,读出来是个map,在map中去新增/删除配置,然后map转yml存到b.yml中。

转换工具类:

public static Map<String, Object> yml2Map(String path) throws FileNotFoundException {
        FileInputStream fileInputStream = new FileInputStream(path);
        Yaml yaml = new Yaml();
        Map<String, Object> ret = (Map<String, Object>) yaml.load(fileInputStream);
        return ret;
    }

    public static void map2Yml(Map<String, Object> map, String path) throws IOException {

        File file = new File(path);
        FileWriter fileWriter = new FileWriter(file);
        DumperOptions options = new DumperOptions();
        options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
        Yaml yaml = new Yaml(options);
        yaml.dump(map, fileWriter);
    }

但是现在的问题是存到b.yml中没有a.yml中的注释了

hzero:
  oauth:
    login:
      default-template: main
      username: wlg

我也尝试了eo-yaml,虽然可以读取yml中的注解,但是eo-yaml中不好做新增、删除配置等操作

求大佬帮忙指教

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

相关推荐