Как сбросить объект Yaml в файл?

У меня есть простая java-программа, которая использует змейку для чтения файла 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(данные, вывод); метод доступен, когда вывод является объектом записи. Я не уверен, как создать экземпляр объекта записи, чтобы отправить его обратно в файл.


person Rahul    schedule 25.04.2014    source источник


Ответы (1)


Чтобы создать писатель

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

Чтобы сбросить данные в модуль записи

yaml.dump(data, writer);

Чтобы закрыть писатель, когда вы закончите

writer.close();
person Peter Lawrey    schedule 25.04.2014
comment
Я пробовал то же самое раньше. Я думаю, что нашел свою проблему. Мой входной поток и выходной писатель были инициализированы один за другим. который по какой-то причине обрезал мой файл, поэтому не было содержимого для чтения. .. - person Rahul; 25.04.2014
comment
@Rahul Согласен, не открывайте файл для чтения до тех пор, пока вы не написали и не закрыли его. - person Peter Lawrey; 25.04.2014