如何将Yaml对象转储到File中?

时间:2014-04-25 15:48:15

标签: java file-io yaml snakeyaml

我有一个简单的java程序,它使用snakeyaml来读取yaml文件,我编辑了一些yaml对象的值。但是我无法将对象转储回yaml文件。不确定什么是将yaml对象转储到文件的正确方法。

继承代码

       InputStream input = new FileInputStream(new File("/etc/cassandra/cassandra.yaml")); 
        Writer output = null;
        try {
            output = new FileWriter("/etc/cassandra/cassandra.yaml");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Yaml yaml = new Yaml();
        Map<String, Object> data = (Map<String, Object>) yaml.load(input);
        System.out.println("yaml data is " +data.get("saved_caches_directory"));
        data.put("saved_caches_directory", "/var/lib/cassandra/saved_new_caches");
        yaml.dump(data, output);
        System.out.println(output.toString());
        output.write(data);  // Error in this line.

    }

我需要yaml.dump()将修改后的yaml对象转储回文件。我不确定写作是如何发生在那里的。根据eclipse yaml.dump(数据,输出);输出是writer对象的方法是可用的。我不确定如何实例化write对象以将其发送回文件。

1 个答案:

答案 0 :(得分:1)

创建一个Writer

Writer writer = new FileWriter("/etc/cassandra/cassandra.yaml");

将数据转储到编写器

yaml.dump(data, writer);

完成后关闭作家

writer.close();