2014-07-25 2 views
6

다음 코드를 고려하십시오 :이 방법은 주어진 경로에 YAML 파일로, 지정된 키에 지정된 객체 O를 작성하는 목표SnakeYaml을 사용하여 YAML 파일에 어떻게 쓰나요?

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 
} 

. (존재하지 않는다면 만들어집니다.)하지만 분명히 주요 부분은 여전히 ​​사라져 있습니다.

다음은 the documentation of SnakeYaml입니다. YAML을 만들려면지도를 만들고 오른쪽 키에 Objects를 넣으면됩니다.

아무데도 (적어도 나는 그것을 볼 수 없다) 특정 경로에 yaml 파일을 만드는 방법이 설명되어 있습니다!

내가 찾은 유일한 것은이었다

는 "Yaml.dump (Object 데이터) 메소드는 자바 객체를 받아 들여 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 문서를 지정된 파일/stream에 씁니다. "

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

는하지만 여전히, 정확히 그 코드의 두 번째 비트에서 말한다해도, 특정 파일의 조작을 지원하지 않는 것 그리고 확실히 그것을 수행하는 방법을 보여 아니에요.

나만이나 문서가 매우 신빙성이 있고 지정되어 있다고 느끼나요? 그 중 절반은 내가 들어 본 적이없는 특별한 어플리케이션에 관한 것입니다. 나는 그것을 단지 보면서 정말로 멍청하다고 느낀다. 그리고 그것은 나를 다소 화나게한다.

아무튼; 네가 나에게 줄 수있는 도움에 정말 감사 할께.

답변

10

내가이 질문을 이해했다면 YAML이나 SnakeYAML 그 자체와 관련이 없지만 Java로 특정 파일에 쓰는 방법과 관련이있는 것처럼 보입니다. 기본적으로 복사 한 두 번째 예제는 객체를 임의의 java.io.Writer 객체로 덤프하는 방법입니다 (비록 StringWriter을 사용하지만 디스크에 아무 것도 쓰지 않으므로). 특정 파일에 쓰기이 예제를 수정하려면, 당신은 너무처럼 FileWriter 이용하여 수행 할 수 있습니다하십시오 YAML 파일에지도 data를 덤프

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

합니다. FileWriter을 열고 나서 FileWriter을 처리 할 때 파일을 직접 만들 필요는 없습니다.

+0

고마워요. : 정확히 내가 무엇을 찾고 있었는지 ... –

+0

하지만 지금은 다른 문제가 있습니다. 첫 번째 두 data.put()의 결과는 다음과 같습니다. {인종 : 사람, 이름 :. YAML에 Silenthand Olleander} 나는 세 번째 넣어 추가 할 경우에만, 내가 얻을 : 특성을 : [ONE_HAND, ONE_EYE] 종족 : 인간 이름 : 좋아 Silenthand Olleander 가해야 당신이 있습니까. 그 이유는 무엇입니까? –

+0

해당 필드에서 올바른 값을 읽을 수 있기 때문에 여전히 "정확합니다"하지만이 레이아웃은 모든 값에 자체 행이있을 때보 다 읽기 쉽지 않습니다.나는 문서를 더 작게 만드는 것이지만 그것을 바꿀 수있는 것을 선호한다고 생각합니다. –

관련 문제