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

CSV 파일에서 데이터를 삭제하는 방법은 OpenCSV 라이브러리의 기능을 활용하여 간단하게 구현할 수 있습니다. OpenCSV는 Java 프로그램에서 CSV 파일을 읽고 쓰기 위한 유용한 도구입니다.

먼저, OpenCSV를 프로젝트에 추가해야 합니다. Maven이나 Gradle과 같은 의존성 관리 도구를 사용하면 간편하게 추가할 수 있습니다. 아래는 Maven을 사용한 OpenCSV 의존성 추가 예시입니다.

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

CSV 파일의 데이터를 삭제하기 위해서는 다음 단계를 따르면 됩니다:

  1. CSV 파일을 읽는 CSVReader 객체를 생성합니다. 이 때, FileReader 클래스를 사용하여 파일을 읽어옵니다.
  2. CSV 파일에서 데이터를 삭제하고 싶은 행을 제외한 나머지 행을 새로운 List 객체에 저장합니다.
  3. CSV 파일을 쓰는 CSVWriter 객체를 생성합니다. 이 때, FileWriter 클래스를 사용하여 새로운 파일을 생성하거나 기존 파일을 덮어쓸 수 있습니다.
  4. 새로운 List 객체에 저장된 데이터를 CSVWriter를 사용하여 파일에 쓰도록 합니다.
  5. CSVReader와 CSVWriter를 닫아서 리소스를 해제합니다.

아래는 CSV 파일에서 특정 데이터를 삭제하는 예시 코드입니다:

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

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class CSVDataDeletionExample {

    public static void main(String[] args) {
        String csvFilePath = "path/to/your/csv/file.csv";
        int rowToDelete = 2; // 삭제하고자 하는 행 번호

        try (CSVReader reader = new CSVReader(new FileReader(csvFilePath));
             CSVWriter writer = new CSVWriter(new FileWriter(csvFilePath))) {

            List<String[]> lines = reader.readAll();

            if (rowToDelete >= 0 && rowToDelete < lines.size()) {
                lines.remove(rowToDelete);
            }

            writer.writeAll(lines);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

위 코드에서 csvFilePath 변수에는 삭제하고자 하는 CSV 파일의 경로를 지정해주어야 합니다. rowToDelete 변수에는 삭제하고 싶은 행의 번호를 입력하면 됩니다. 이후 코드를 실행하면 해당 행이 삭제된 CSV 파일이 생성될 것입니다.

추가로, OpenCSV의 세부적인 기능 및 사용법은 공식 문서를 참고하시면 도움이 될 것입니다. OpenCSV 공식 문서 링크는 다음과 같습니다: https://opencsv.sourceforge.io/