湖南第一帅 2020-07-31 17:58 采纳率: 0%
浏览 1317

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条回答 默认 最新

  • threenewbee 2020-07-31 18:39
    关注
    评论

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题