CSV 파일이란?
CSV(Comma Separated Values, 쉼표로 구분된 값)는 데이터를 저장하고 교환하기 위해 가장 널리 사용되는 텍스트 파일 형식 중 하나입니다. CSV 파일에서는 각 줄(line)에 여러 개의 값이 쉼표(,)로 구분되어 저장되며, 파일 확장자는 .csv입니다.
Java에서 CSV 파일을 읽는 기본 원리
Java에서는 BufferedReader 클래스의 readLine() 메서드를 사용하여 CSV 파일을 한 줄씩 읽을 수 있습니다. 그다음 각 줄을 쉼표 문자를 기준으로 분할(split)하면 해당 줄의 데이터가 배열 형태로 얻어집니다. 이렇게 만든 배열은 반복문으로 순회하거나 인덱스를 사용해 원하는 값에 손쉽게 접근할 수 있습니다.
처리 흐름 요약
- 파일 열기: File 객체와 FileReader를 통해 대상 CSV 파일에 연결합니다.
- 버퍼링: BufferedReader로 감싸면 내부 버퍼를 활용해 효율적으로 읽을 수 있습니다.
- 줄 단위 읽기: readLine()이 null을 반환할 때까지(파일의 끝까지) 반복합니다.
- 데이터 분리: split(",") 메서드로 각 줄을 쉼표 기준으로 나누어 배열에 저장합니다.
- 출력 및 종료: 배열을 순회하며 값을 출력한 후, close()로 리소스를 해제합니다.
예제 코드
import java.io.*;
public class CSVReaderTest {
public static final String delimiter = ",";
public static void read(String csvFile) {
try {
File file = new File(csvFile);
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = "";
String[] tempArr;
while((line = br.readLine()) != null) {
tempArr = line.split(delimiter);
for(String tempStr : tempArr) {
System.out.print(tempStr + " ");
}
System.out.println();
}
br.close();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}
public static void main(String[] args) {
// 읽을 CSV 파일 경로
String csvFile = "C:/Temp/Technology.csv";
CSVReaderTest.read(csvFile);
}
}
실행 결과
"JAVA" "PYTHON" "JAVASCRIPT" "SELENIUM" "SCALA"
실무에서 알아두면 좋은 팁
- try-with-resources 활용: Java 7 이상에서는 try-with-resources 구문을 사용하면 스트림이 자동으로 닫히므로 리소스 누수를 예방할 수 있습니다.
- 인코딩 지정: 한글 데이터가 포함된 CSV라면 InputStreamReader와 함께 UTF-8 등 명시적인 문자 인코딩을 지정하는 것이 안전합니다.
- 복잡한 CSV 처리: 값 안에 쉼표가 포함되거나 따옴표 처리가 필요한 경우에는 Apache Commons CSV 같은 전용 라이브러리를 사용하는 것이 좋습니다.