java - 如何使用 SnakeYaml 写入 YAML 文件?

标签 java file output fileoutputstream snakeyaml

考虑以下代码:

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
}

此方法旨在将给定键的给定对象 O 写入给定路径的 YAML 文件中。 (如果不存在则创建。)但显然主要部分仍然缺失。

现在关注the documentation of SnakeYaml ,要创建 YAML,我只需要创建一个映射并将对象放入正确的键中,我就这样做了。

但是没有任何地方(至少我没有看到)描述如何在特定路径创建 yaml 文件!

我唯一发现的是:

“Yaml.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);
}

“Yaml.dump(Object data, Writer output) 将生成的 YAML 文档写入指定的文件/流。”

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());
}

但是,尽管它在代码的第二位中准确说明了这一点,但它似乎并不支持对某个文件的操作,而且肯定没有显示如何操作。

是只有我一个人,还是文档感觉非常含糊和具体?其中一半是关于我从未听说过的特殊应用程序。光是看着我就觉得自己很蠢,这让我有点生气。

无论如何;如果您能给我任何帮助,我将不胜感激。

最佳答案

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

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);
}

这会将 map data 转储到 YAML 文件中。请注意,通常不需要在打开 FileWriter 之前自己创建文件,因为 FileWriter 会为您处理。

关于java - 如何使用 SnakeYaml 写入 YAML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24949505/

相关文章:

java - 每个特定时间间隔更改设备背景

java - 为什么类编译为 .class 但接口(interface)不编译为 .interface

java - 如何告诉 hibernate validator 仅验证一个注释?

ios - 如何将文本文件放到 iPhone 上?

java - 输入/输出Java

java - 在运行时编译 renderscript 代码

php - 下载文件然后重定向到另一个页面

java - 如何使用java在Rest Web服务中下载不同类型的文件

c - c中的输出问题

c - 为什么我的 C 程序的输出不正确?