BufferedReader 가 뭐게?

CountryGirl·2025년 4월 1일
0

Java

목록 보기
19/19

BufferedReader

  • 문자 스트림으로부터 텍스트를 읽어오는 역할
  • 버퍼링 기능을 제공 → 한 번에 많은 양의 데이터를 읽음
  • readLine() 메서드는 한 줄씩 텍스트를 읽어오는 데 유용

readLine()

  • readLine()은 문자 스트림에서 한 줄의 텍스트를 읽어오는 역할
  • 한 줄을 읽고 문자열을 반환하거나, 더 이상 읽을 내용이 없으면 null을 반환

EOF (End-of-File) 처리

  • Windows: Ctrl + Z
  • Linux/macOS: Ctrl + D

백준 문제를 풀다가 개행문자가 포함된 입력을 받았어야 했다. 그래서 아래와 같은 방법을 사용했다.

BufferedReaderreadLine()을 사용하게 되면 개행문자가 입력되는 경우, 입력이 종료된다.
while을 사용하여 개행문자가 입력되어도 입력이 지속되고, EOF가 입력되었을 때 종료하도록 하였다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        String line;

        while ((line = br.readLine()) != null) {
            sb.append(line).append("\n");
        }

        System.out.println("sb.toString());
        br.close();
    }
}

while ((line = br.readLine()) != null) 조건에서 readLine()이 개행 문자를 만나 종료되는 것은 맞지만, while 루프 덕분에 "계속 입력을 받는 것처럼 보이는 것!!!!"


🚨 핵심은 readLine()이 종료되는 시점과 while 루프의 조건 판단 시점이 다르다는 점

readLine()은 개행 문자를 만나면 종료되지만, null을 반환하는 것은 아니다!!!!
개행 문자 앞까지의 문자열을 반환하므로, while 루프는 계속 실행
while 루프가 종료되는 시점은 readLine()이 더 이상 읽을 내용이 없어서 null을 반환할 때

profile
💻🌾시골소녀의 엉망징창 개발 성장일지🌾💻 (2023.05.23 ~)

0개의 댓글