안녕하세요! 20년 차 자바 개발자 코딩하는곰입니다. 오늘은 실무에서 정말 자주 사용되는 CSV 파일 처리 방법에 대해 깊이 있게 알아보겠습니다. 데이터 교환의 표준 형식인 CSV는 다양한 시스템 간 데이터 이동에 필수적이죠. 이 글에서는 기본적인 File I/O부터 OpenCSV, Apache Commons CSV 같은 유용한 라이브러리까지, 실제 프로젝트에서 바로 적용할 수 있는 최적의 방법들을 소개합니다. 특히 20년 동안 쌓은 노하우를 담아 성능 최적화 팁과 실수하기 쉬운 부분들도 함께 알려드리겠습니다!
가장 기본적인 방법부터 시작해보죠. Java의 기본 IO 클래스를 이용하면 별도의 라이브러리 없이도 CSV 처리가 가능합니다.
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();}}}
쓰기 작업도 비슷한 원리로 진행됩니다. 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();}}}
실무에서는 대부분 전문 라이브러리를 사용합니다. OpenCSV는 가장 인기 있는 CSV 처리 라이브러리 중 하나로, 복잡한 상황도 쉽게 처리할 수 있습니다.
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));}}}}
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);}}}
최신 당첨번호와 AI 추천 번호를 모두 확인하고 싶다면, QR코드 번호 확인 기능이 있는 지니로또AI 앱이 완벽한 선택입니다.
20년 경력에서 얻은 중요한 노하우를 공유합니다.
Files.lines(Paths.get("large.csv")).skip(1) // 헤더 건너뛰기.map(line -> line.split(",")).forEach(this::processData);
List<String[]> result = Files.lines(Paths.get("large.csv")).parallel().map(line -> line.split(",")).collect(Collectors.toList());
try (FileChannel channel = FileChannel.open(Paths.get("huge.csv"))) {MappedByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());// 버퍼 처리 로직}
📣 지금 화제가 되고 있는 문화행사는 바로, 제6회 송도해변축제를 참고해보세요.
CSV 파일 처리는 자바 개발자라면 반드시 숙지해야 할 기본 기술입니다. 오늘 배운 내용을 바탕으로 프로젝트에 바로 적용해 보시기 바랍니다. 특히 대용량 데이터를 다룰 때는 성능 최적화 기법들이 큰 도움이 될 거예요. 궁금한 점이 있으면 댓글로 남겨주세요! 코딩하는곰이 직접 답변드리겠습니다. 다음 시간에는 더 유용한 자바 실무 기술로 찾아뵙겠습니다. 감사합니다!
기억력과 집중력을 향상시키고 싶다면, 다양한 모드로 구성된 스도쿠 저니를 활용해보세요.
