[java] SnakeYAML을 사용하여 YAML 파일의 스트림 처리하기

이번 포스트에서는 SnakeYAML(https://bitbucket.org/asomov/snakeyaml/src/default/) 라이브러리를 사용하여 YAML 파일의 스트림을 처리하는 방법에 대해 알아보겠습니다. YAML은 인간이 쉽게 읽을 수 있는 데이터 직렬화 형식이며, SnakeYAML은 Java에서 YAML을 해석하고 생성하기 위한 강력한 도구입니다.

SnakeYAML 설치하기

우선 SnakeYAML을 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가하세요:

<dependency>
    <groupId>org.yaml</groupId>
    <artifactId>snakeyaml</artifactId>
    <version>1.27</version>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가하세요:

dependencies {
    implementation 'org.yaml:snakeyaml:1.27'
}

SnakeYAML은 이제 프로젝트에 추가되었습니다.

YAML 파일 파싱하기

먼저 YAML 파일을 읽어와 파싱하는 방법을 알아보겠습니다. 다음 예제는 config.yaml 파일을 파싱하여 해당 내용을 출력하는 예제입니다:

import org.yaml.snakeyaml.Yaml;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Map;

public class YAMLParser {
    public static void main(String[] args) {
        try (InputStream input = new FileInputStream("config.yaml")) {
            Yaml yaml = new Yaml();
            Map<String, Object> data = yaml.load(input);

            System.out.println(data);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서 config.yaml 파일의 경로를 적절하게 수정해야 합니다. 예제 코드를 실행하면 YAML 파일의 내용이 출력됩니다.

YAML 파일 생성하기

이번에는 SnakeYAML을 사용하여 YAML 파일을 생성하는 방법에 대해 알아보겠습니다. 다음 예제는 Map 객체를 생성하고, 이를 YAML 파일로 저장하는 예제입니다:

import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

public class YAMLGenerator {
    public static void main(String[] args) {
        Map<String, Object> data = new HashMap<>();
        data.put("name", "John Doe");
        data.put("age", 30);
        data.put("email", "johndoe@example.com");

        try (Writer output = new FileWriter("output.yaml")) {
            DumperOptions options = new DumperOptions();
            options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);

            Yaml yaml = new Yaml(options);
            yaml.dump(data, output);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드는 output.yaml 파일에 YAML 형식으로 data Map 객체를 저장합니다. 적절한 파일 경로를 설정한 후 예제 코드를 실행하면 YAML 파일이 생성됩니다.

결과 확인하기

위의 예제 코드를 실행하고 나면 YAML 파일의 내용을 확인할 수 있습니다. 파싱한 YAML 파일의 내용을 다루기 쉬운 자바 객체로 변환하거나, 자바 객체를 YAML 형식의 파일로 저장하는 것은 SnakeYAML을 사용하면 매우 간단하게 할 수 있습니다.

더 많은 SnakeYAML 기능과 사용법은 공식 문서(https://bitbucket.org/asomov/snakeyaml/src/default/)를 참조하세요.

이번 포스트에서는 SnakeYAML을 사용하여 YAML 파일의 스트림을 처리하는 방법에 대해 알아보았습니다. YAML 파일 파싱과 생성을 위해 SnakeYAML을 사용하는 것은 간단하고 효율적인 방법입니다.