【问题标题】:How to dump Yaml object into File?如何将 Yaml 对象转储到文件中?
【发布时间】:2014-06-11 10:26:37
【问题描述】:

我有一个简单的 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(data, output);方法可用,其中输出是写入器对象。我不确定如何实例化写入对象以将其发送回文件。

【问题讨论】:

    标签: java file-io yaml snakeyaml


    【解决方案1】:

    创建一个作家

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

    将数据转储到写入器

    yaml.dump(data, writer);
    

    完成后关闭编写器

    writer.close();
    

    【讨论】:

    • 我之前也尝试过。我想我发现了我的问题。我的输入流和输出写入器一个接一个地被初始化。由于某种原因,它截断了我的文件,因此没有要读取的内容。 ..
    • @Rahul 同意,在您编写并关闭文件之前不要打开文件进行阅读。
    猜你喜欢
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 2018-11-23
    • 2011-10-15
    相关资源
    最近更新 更多