当前位置: 首页 > 知识库问答 >
问题:

如何使用SnakeyAML写入YAML文件?

羊城
2023-03-14

考虑以下代码:

public static void dumpObjectToYaml(String key, Object O, String path) throws IOException
{
    Map<String, Object> data = new HashMap<>();
    data.put(key, O);

    File F = new File(path);
    F.mkdirs();
    F.createNewFile();

    //write data to File
}

我唯一发现的是:

dump(Object data)方法接受Java对象并生成YAML文档

public void testDump() 
{
    Map<String, Object> data = new HashMap<String, Object>();
    data.put("name", "Silenthand Olleander");
    data.put("race", "Human");
    data.put("traits", new String[] { "ONE_HAND", "ONE_EYE" });
    Yaml yaml = new Yaml();
    String output = yaml.dump(data);
    System.out.println(output);
}

public void testDumpWriter() 
{
   Map<String, Object> data = new HashMap<String, Object>();
   data.put("name", "Silenthand Olleander");
   data.put("race", "Human");
   data.put("traits", new String[] { "ONE_HAND", "ONE_EYE" });
   Yaml yaml = new Yaml();
   StringWriter writer = new StringWriter();
   yaml.dump(data, writer);
   System.out.println(writer.toString());
}

是只有我一个人,还是文档感觉非常神秘和指定?其中一半是关于我甚至从未听说过的特殊应用。我只看着它就觉得自己很傻,这让我有点生气。

不管怎样;如果你能给我任何帮助,我将不胜感激。

共有1个答案

荀豪
2023-03-14

如果我理解了这个问题,它似乎与YAML或SnakeYAML本身没有任何关系,而是与如何用Java写入特定文件有关。基本上,您复制的第二个示例展示的是如何将对象转储到任意java.io.writer对象(尽管它们使用StringWriter,因为这不会向磁盘写入任何内容)。如果希望修改此示例以写入特定文件,可以使用文件编写器,如下所示:

public void testDumpWriter() {
   Map<String, Object> data = new HashMap<String, Object>();
   data.put("name", "Silenthand Olleander");
   data.put("race", "Human");
   data.put("traits", new String[] { "ONE_HAND", "ONE_EYE" });

   Yaml yaml = new Yaml();
   FileWriter writer = new FileWriter("/path/to/file.yaml");
   yaml.dump(data, writer);
}

它将映射数据转储到YAML文件。请注意,在打开filewriter之前,通常不必自己创建文件,因为filewriter将为您处理该文件。

 类似资料:
  • 我试图将上面的文件加载到一个映射中,实体部分下的数据将映射到实体对象的集合。当我得到yaml解析器错误时,这是正确的yaml语法吗。

  • 是否有任何方法可以使用java编辑/删除YAMLfile中的值。 我正在使用struts2-jquery-grid,其中数据将从YAML文件中填充。现在,如果我编辑字段,它应该保存在YAML文件中。我能够分别使用yaml.load()和yaml.dump()从YAML格式的文件中读取值并将值写入文件。但是,我没有任何想法来编辑和删除特定的字段。 我经历过http://code.google.com

  • 我在这方面遇到了很多麻烦。我定义了构造函数,我可以让它导入一个文档,但不是两个。我得到的错误是: 有了一个include,Snakeyaml很高兴找到一个EOF并处理导入。有了两个,就不开心了(上图)。 我的java源代码是: 问题是,有没有人对蛇蟹做过类似的事情?有没有想过我做错了什么?

  • 所以我和蛇怪打过交道。我知道如何使用返回字符串和对象的hashmap。为了演示,我有一个包含值的yaml文件: 当我使用

  • 文档中只有嵌套在其他对象中的映射/集合的示例,因此您可以执行以下操作: 但是,当地图格式位于文档的根目录时,如何定义它呢?

  • 问题内容: 我如何将分数写入文件? 问题答案: 您可以手动打开和关闭文件,但最好使用它,因为它可以为您处理关闭文件。 表示追加到文件中,该文件不会覆盖以前的内容- 这可能是您想要的。据我所知,您将要在print语句之后或之前添加它。如果您不懂读写文件,则应查看此链接。