[java] OpenCSV를 사용하여 CSV 파일에서 특정 열을 복사하는 방법은?

먼저, Maven 등의 의존성 관리 도구를 사용하여 OpenCSV를 프로젝트에 추가해야 합니다. 다음은 Maven을 사용하는 경우 pom.xml 파일에 추가하는 내용입니다:

<dependencies>
    <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>5.4</version>
    </dependency>
</dependencies>

이제 Java 코드에서 CSV 파일을 읽고 특정 열을 복사하는 방법을 살펴보겠습니다. 예를 들어, “input.csv” 파일에서 “name” 열을 복사하여 “output.csv” 파일에 저장하는 경우 다음과 같이 할 수 있습니다:

import com.opencsv.CSVReader;
import com.opencsv.CSVWriter;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

public class CsvColumnCopyExample {
    public static void main(String[] args) {
        String inputFile = "input.csv";
        String outputFile = "output.csv";
        int columnIndexToCopy = 1; // 0부터 시작하는 열의 인덱스

        try {
            // CSV 파일 읽기
            CSVReader reader = new CSVReader(new FileReader(inputFile));
            List<String[]> rows = reader.readAll();
            reader.close();

            // 특정 열 복사하여 새로운 리스트에 저장
            List<String[]> copiedRows = new ArrayList<>();
            for (String[] row : rows) {
                if (row.length > columnIndexToCopy) {
                    String valueToCopy = row[columnIndexToCopy];
                    String[] newRow = new String[]{valueToCopy};
                    copiedRows.add(newRow);
                }
            }

            // 새로운 CSV 파일 쓰기
            CSVWriter writer = new CSVWriter(new FileWriter(outputFile));
            writer.writeAll(copiedRows);
            writer.close();

            System.out.println("특정 열이 복사되었습니다.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 코드에서 input.csv 파일의 name 열(인덱스 1)을 복사하여 output.csv 파일에 저장합니다. 복사할 열의 인덱스를 조정하여 다른 열을 복사할 수 있습니다.

이렇게 OpenCSV를 사용하여 CSV 파일에서 특정 열을 복사하는 방법을 알아보았습니다. OpenCSV의 다양한 기능을 활용하여 CSV 파일을 처리할 수 있습니다. OpenCSV 문서를 참조하여 더 많은 기능을 알아보시기 바랍니다.