홈 › 실무 배치 › 02 / 6

대용량 파일 I/O (NIO, Buffered)

섹션 7진행 0 / 6

7. 정리

  • I/O 비용의 본질은 시스템 콜 횟수다. 버퍼는 커널 호출을 수천 분의 1로 줄인다. FileReader/FileWriter 는 반드시 Buffered* 로 감싸거나 Files.newBuffered* 를 쓴다.
  • readAllLines 는 전체를 힙에 올리고, newBufferedReader/Files.lines 는 한 줄씩 준다. 배치는 후자. Files.lines 는 try-with-resources 필수.
  • 인코딩은 항상 명시한다. Excel CSV 는 MS949, 그 외는 UTF-8 이 기본. 한글 고정길이는 바이트 단위로 자른다.
  • CSV 는 split(",") 으로 파싱하지 않는다. 따옴표 상태 머신 파서 또는 검증된 라이브러리를 쓴다.
  • 결과 파일은 임시 파일에 쓰고 ATOMIC_MOVE. 반쪽짜리 파일이 정식 이름으로 존재하는 순간을 없앤다.

다음 레슨 03. 청크 처리 에서는 "한 줄씩 읽는다"를 넘어, 왜 N건씩 묶어 처리하는지, OOM 이 정확히 어떻게 발생하는지 힙 사용량을 직접 측정하며 확인하고, 청크 단위 병렬 처리까지 구현합니다.