[Java] 심화 - 파일 입출력(Stream)

이지연·2025년 12월 25일

개요

아래의 내용은 java_grammer 레파지토리 C07ExceptionFileParsing 디렉터리에 저장되어있는 내용을 정리함

  • C03File
    Stream 개념 → IO vs NIO → 파일 읽기/쓰기 워크플로우

Stream이란?

스트림(stream)은 실제 입력/출력 데이터를 이상화된 흐름으로 표현한 것
운영체제에서 생성되는 가상의 연결 고리로, 시스템 간 데이터 전송의 중간 매개자 역할.

키보드 입출력부터

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = br.readLine();
System.out.println(input);

구조 분석

  • InputStreamReader: 문자체계 받음 + System.in: 키보드 연결
  • BufferedReader: 입력을 버퍼에 모아 성능 최적화 (하나하나 전달시 느림)

버퍼 역할: 데이터를 한 곳에서 다른 곳으로 전송하는 동안 임시 보관 메모리 영역


파일 입출력 - IO 패키지 (전통 방식)

스트림 종류
| 구분 | byte 기반 | character 기반 |
|------|-----------|----------------|
| 용도 | 바이너리(이미지, 오디오) | 텍스트 파일 |
| 클래스 | FileInputStream | FileReader, FileWriter |

BufferedReader br2 = new BufferedReader(new FileReader("test.txt"));
String line = br2.readLine();
while (line != null) {
    System.out.println(line);
    line = br2.readLine();
}

특징: Blocking 방식 (스레드 읽기까지 대기), 버퍼는 별도 추가 필요

NIO 패키지 - 현대 방식

NIO(New Input Output) 특징

  • NonBlocking: 동시작업 가능
  • 버퍼기반 기본: 성능 우수

읽기 방법 비교

메서드반환용도
Files.readString()String파일 전체 통째로
Files.readAllLines()List<String>라인별 분할
Path filePath = Paths.get("test.txt");

// 전체 읽기
String st1 = Files.readString(filePath);
System.out.println(st1); // "홍길동1\n홍길동2"

// 라인별 리스트
List<String> strList = Files.readAllLines(filePath);
System.out.println(strList); // ["홍길동1", "홍길동2"]

쓰기 방법

Path filePath1 = Paths.get("test.txt");

// Files.write(경로, 데이터, 옵션)
Files.write(filePath1, "\n홍길동3".getBytes(), StandardOpenOption.APPEND);
옵션동작
CREATE_NEW새로 만들기 (파일 존재시 에러)
WRITE덮어쓰기
APPEND끝에 추가

IO vs NIO 성능 비교

구분IO (java.io)NIO (java.nio)
BlockingO (스레드 대기)X (동시작업 가능)
Thread SafeOX
Buffer별도 추가기본 포함
실무 사용레거시현대 표준

키워드: 블로킹/논블로킹, 동기/비동기 → 작업 성능 최적화 핵심


정리

  • 키보드: BufferedReader + System.in
  • 파일 읽기: Files.readString() / readAllLines() (NIO 추천)
  • 파일 쓰기: Files.write() + 옵션 (APPEND 주로 사용)
  • 실무: NIO만 쓰면 돼. IO는 레거시 코드에서만 보임

Path 객체가 모든 파일 작업의 시작점. Paths.get()으로 절대/상대 경로 모두 처리 가능.

profile
Eazy하게

0개의 댓글