[java] OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 필터링하는 방법은?
OpenCSV는 Java에서 CSV(Comma Separated Values) 파일을 읽고 쓰기 위한 라이브러리입니다. 이를 사용하여 CSV 파일의 데이터를 원하는 기준에 따라 필터링하는 방법을 알아보겠습니다.
-
OpenCSV 라이브러리 추가하기 먼저 OpenCSV를 사용하기 위해 프로젝트에 OpenCSV 라이브러리를 추가해야합니다. Maven이나 Gradle 등의 의존성 관리 도구를 사용하는 경우, 해당 도구를 통해 OpenCSV를 가져올 수 있습니다. 또는 OpenCSV의 JAR 파일을 다운로드하여 프로젝트의 라이브러리 폴더에 직접 추가할 수도 있습니다.
-
CSV 파일 읽기 먼저 CSV 파일을 읽어오기 위해
CSVReader
클래스를 사용합니다. 아래는 파일 경로를 입력받아 CSV 파일을 읽고List<String[]>
형태로 반환하는 메소드입니다.
import com.opencsv.CSVReader;
public List<String[]> readCSV(String filePath) throws IOException {
List<String[]> records = new ArrayList<>();
try (CSVReader csvReader = new CSVReader(new FileReader(filePath))) {
String[] record;
while ((record = csvReader.readNext()) != null) {
records.add(record);
}
}
return records;
}
- 데이터 필터링 CSV 파일에서 필터링할 데이터를 원하는 기준에 따라 선택합니다. 예를 들어, “age” 열이 30보다 큰 데이터만 필터링한다고 가정해봅시다. 아래는 데이터 필터링을 수행하는 메소드입니다.
public List<String[]> filterData(List<String[]> records, int columnIdx, int filterValue) {
List<String[]> filteredRecords = new ArrayList<>();
for (String[] record : records) {
int age = Integer.parseInt(record[columnIdx]);
if (age > filterValue) {
filteredRecords.add(record);
}
}
return filteredRecords;
}
- 필터링된 데이터 출력하기 마지막으로, 필터링된 데이터를 출력해보는 예제입니다.
public void printFilteredData(List<String[]> filteredRecords) {
for (String[] record : filteredRecords) {
for (String field : record) {
System.out.print(field + " ");
}
System.out.println();
}
}
위의 예제 코드에서 columnIdx
는 데이터를 필터링할 열의 인덱스를 의미하며, filterValue
는 필터링할 값을 의미합니다. 필터링된 데이터는 filteredRecords
에 저장되고, 해당 데이터는 printFilteredData
메소드를 통해 출력됩니다.
이렇게 OpenCSV를 사용하여 CSV 파일의 데이터를 임의로 필터링할 수 있습니다.
참조:
- OpenCSV 공식 문서: https://opencsv.sourceforge.io/
- Maven Central Repository: https://search.maven.org/