Home

(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우

Published in java
June 04, 2024
1 min read
(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우

안녕하세요! 20년 차 자바 개발자 코딩하는곰입니다. 오늘은 실무에서 정말 자주 사용되는 CSV 파일 처리 방법에 대해 깊이 있게 알아보겠습니다. 데이터 교환의 표준 형식인 CSV는 다양한 시스템 간 데이터 이동에 필수적이죠. 이 글에서는 기본적인 File I/O부터 OpenCSV, Apache Commons CSV 같은 유용한 라이브러리까지, 실제 프로젝트에서 바로 적용할 수 있는 최적의 방법들을 소개합니다. 특히 20년 동안 쌓은 노하우를 담아 성능 최적화 팁과 실수하기 쉬운 부분들도 함께 알려드리겠습니다!

1. 자바 기본 IO로 CSV 파일 읽기/쓰기

가장 기본적인 방법부터 시작해보죠. Java의 기본 IO 클래스를 이용하면 별도의 라이브러리 없이도 CSV 처리가 가능합니다.

파일 읽기 (FileReader + BufferedReader)

CSV 파일을 읽을 때는 BufferedReader를 사용하는 것이 가장 효율적입니다. 한 줄씩 읽으면서 처리하는 방식이 메모리 사용량을 최적화합니다.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class BasicCSVReader {
public static void main(String[] args) {
String filePath = "data.csv";
try (BufferedReader br = new BufferedReader(new FileReader(filePath))) {
String line;
while ((line = br.readLine()) != null) {
String[] values = line.split(",");
// 처리 로직
System.out.println(Arrays.toString(values));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

파일 쓰기 (FileWriter + BufferedWriter)

쓰기 작업도 비슷한 원리로 진행됩니다. BufferedWriter를 사용하면 시스템 호출 횟수를 줄여 성능을 향상시킬 수 있습니다.

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class BasicCSVWriter {
public static void main(String[] args) {
String filePath = "output.csv";
String[] data = {"id", "name", "email"};
try (BufferedWriter bw = new BufferedWriter(new FileWriter(filePath))) {
bw.write(String.join(",", data));
bw.newLine();
} catch (IOException e) {
e.printStackTrace();
}
}
}

(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우
(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우


2. OpenCSV 라이브러리 활용하기

실무에서는 대부분 전문 라이브러리를 사용합니다. OpenCSV는 가장 인기 있는 CSV 처리 라이브러리 중 하나로, 복잡한 상황도 쉽게 처리할 수 있습니다.

OpenCSV로 읽기

import com.opencsv.CSVReader;
import com.opencsv.exceptions.CsvException;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
public class OpenCSVReader {
public static void main(String[] args) throws IOException, CsvException {
try (CSVReader reader = new CSVReader(new FileReader("data.csv"))) {
List<String[]> allData = reader.readAll();
for (String[] row : allData) {
System.out.println(Arrays.toString(row));
}
}
}
}

OpenCSV로 쓰기

import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;
public class OpenCSVWriter {
public static void main(String[] args) throws IOException {
try (CSVWriter writer = new CSVWriter(new FileWriter("output.csv"))) {
String[] header = {"ID", "Name", "Salary"};
writer.writeNext(header);
String[] data1 = {"1", "John Doe", "50000"};
String[] data2 = {"2", "Jane Smith", "60000"};
writer.writeNext(data1);
writer.writeNext(data2);
}
}
}

(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우
(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우


최신 당첨번호와 AI 추천 번호를 모두 확인하고 싶다면, QR코드 번호 확인 기능이 있는 지니로또AI 앱이 완벽한 선택입니다.

3. 고급 활용 및 성능 최적화

20년 경력에서 얻은 중요한 노하우를 공유합니다.

대용량 파일 처리 팁

  1. 스트림 API 활용: Java 8의 Stream API를 사용하면 메모리 사용을 최적화할 수 있습니다.
Files.lines(Paths.get("large.csv"))
.skip(1) // 헤더 건너뛰기
.map(line -> line.split(","))
.forEach(this::processData);
  1. 병렬 처리: CPU 코어를 활용한 병렬 처리
List<String[]> result = Files.lines(Paths.get("large.csv"))
.parallel()
.map(line -> line.split(","))
.collect(Collectors.toList());
  1. 메모리 매핑 파일: 매우 큰 파일의 경우 NIO의 메모리 매핑 파일 사용
try (FileChannel channel = FileChannel.open(Paths.get("huge.csv"))) {
MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
// 버퍼 처리 로직
}

(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우
(자바 실무) CSV 파일 읽기/쓰기 완벽 가이드 - 20년 경력 개발자의 노하우


📣 지금 화제가 되고 있는 문화행사는 바로, 제6회 송도해변축제를 참고해보세요.

CSV 파일 처리는 자바 개발자라면 반드시 숙지해야 할 기본 기술입니다. 오늘 배운 내용을 바탕으로 프로젝트에 바로 적용해 보시기 바랍니다. 특히 대용량 데이터를 다룰 때는 성능 최적화 기법들이 큰 도움이 될 거예요. 궁금한 점이 있으면 댓글로 남겨주세요! 코딩하는곰이 직접 답변드리겠습니다. 다음 시간에는 더 유용한 자바 실무 기술로 찾아뵙겠습니다. 감사합니다!

기억력과 집중력을 향상시키고 싶다면, 다양한 모드로 구성된 스도쿠 저니를 활용해보세요.









최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기
최상의 건강을 위한 영양가득한 식품과 정보! life-plus.co.kr 바로가기



다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기
다채로운 문화축제와 공연 소식을 공유하는 블로그! culturestage.co.kr 바로가기



비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기
비트코인 세계로의 첫걸음! 지금 가입하고 거래 수수료 할인 혜택 받으세요! bitget.com 바로가기




Tags

#developer#coding#java

Share

Previous Article
(자바) String vs StringBuilder 성능 차이와 사용 사례 완벽 가이드

Table Of Contents

1
1. 자바 기본 IO로 CSV 파일 읽기/쓰기
2
2. OpenCSV 라이브러리 활용하기
3
3. 고급 활용 및 성능 최적화

Related Posts

(Java 예외 처리 마스터하기) 다중 catch와 예외 흐름 제어의 모든 것 - 코딩하는곰의 20년 노하우
December 16, 2025
3 min