[java] OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 이동하는 방법은?

CSV 파일은 데이터를 쉼표로 구분하는 텍스트 파일 형식으로 많이 사용됩니다. OpenCSV는 Java에서 CSV 파일을 읽고 쓰기 위한 인기있는 라이브러리입니다.

먼저, OpenCSV를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml에 다음 종속성을 추가해주세요:

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

OpenCSV를 프로젝트에 추가한 후에는 다음과 같이 CSV 파일을 읽어서 데이터를 임의의 위치로 이동시킬 수 있습니다:

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

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

public class CSVDataMover {
    public static void main(String[] args) {
        String sourceFilePath = "path/to/source.csv";
        String destinationFilePath = "path/to/destination.csv";
        int rowIndexToMove = 2; // 이동할 행의 인덱스

        try (CSVReader reader = new CSVReader(new FileReader(sourceFilePath));
             CSVWriter writer = new CSVWriter(new FileWriter(destinationFilePath))) {
            List<String[]> rows = reader.readAll();

            // 이동할 행을 임시로 저장하는 리스트
            List<String[]> movedRow = new ArrayList<>();
            movedRow.add(rows.get(rowIndexToMove));

            // 원본 파일에서 이동한 행 제거
            rows.remove(rowIndexToMove);

            // 이동한 행을 새로운 위치(예: 첫 번째 행)에 삽입
            rows.add(0, movedRow.get(0));

            // 이동된 데이터를 목적지 파일에 쓰기
            writer.writeAll(rows);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위의 예제 코드에서는 OpenCSV의 CSVReaderCSVWriter 클래스를 사용하여 CSV 파일을 읽고 쓰고 있습니다. CSVReader를 사용하여 원본 파일을 읽은 후에, 이동할 행을 임시로 저장하고 원본 파일에서 제거합니다. 그런 다음, 이동한 행을 새로운 위치에 삽입하고 CSVWriter를 사용하여 총 데이터를 목적지 파일에 쓰게 됩니다.

이와 같이 OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 이동시킬 수 있습니다. 추가적으로 OpenCSV에는 데이터 필터링, 열의 순서 변경, CSV 파일 생성 등 다양한 기능이 제공되므로 필요에 따라 적절히 활용할 수 있습니다.

참고 자료: