Как написать в файл YAML с помощью 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 по заданному пути. (если он не существует, он создается.) Но очевидно, что основная часть все еще отсутствует.
Теперь, следуядокументации SnakeYaml , для создания 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);
}
И
"Ямл.дамп (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());
}
Но все же, несмотря на то, что он говорит именно это во втором бите кода, он, похоже, не поддерживает манипуляции с определенным файлом, и это конечно, не показали, как это делается.
Это только я или документация кажется очень загадочной и конкретной? Половина из них касается специальных приложений, о которых я никогда даже не слышал. Я чувствую себя очень глупо, просто глядя на него, и это меня немного злит.
Во всяком случае, я был бы очень признателен за любую помощь, которую вы могли бы мне оказать.1 ответ:
Если я правильно понял вопрос, он, похоже, не имеет ничего общего с 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); }
, который сбросит карту
data
в файл YAML. Обратите внимание, что обычно нет необходимости создавать файл самостоятельно перед открытиемFileWriter
, посколькуFileWriter
будет обрабатывать это для вас.