[자바 파일 I/O with Buffer] 84. Buffer

김건우's avatar
Feb 19, 2025
[자바 파일 I/O with Buffer] 84. Buffer
💡
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
 키보드 입력을 문자 단위로 효율적으로 읽기 위한 설정입니다.

1. System.in 이란

  • 표준 입력 스트림을 의미한다. 우리가 키보드로 입력하는 데이터가 System.in을 통해 들어온다
  • 기본적으로 바이트 단위로 데이터를 받기 때문에, 우리가 원하는 문자 형태로 바꾸기 위해서는 추가적인 처리가 필요하다

2. InputStreamReader의 역할

  • 바이트 스트림인 System.in을 문자 스트림으로 변환해주는 역할을 합니다.

3. BufferedReader로 효율적인 입력 받기

  • 버퍼링된 문자 입력을 제공합니다. 데이터를 읽을 때 버퍼를 사용해 한 번에 모아서 처리하므로, 성능이 훨씬 좋아진다.

예제 1. Buffer 사용

package ex18; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Scanner; // 최종 public class Buff03 { public static void main(String[] args) { // InputStream in = System.in; // InputStreamReader rd = new InputStreamReader(in); // BufferedReader br = new BufferedReader(rd); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); try { String line = br.readLine(); System.out.println(line); } catch (IOException e) { throw new RuntimeException(e); } } }
notion image

예제 2. 버퍼는 꽉 차야 전송된다

💡
True가 역슬래쉬 + 플러쉬(데이터를 흘려보내는) 역할을 한다. true가 없으면 hello world 뒤에 \n을 붙혀줘야함. 데이터를 흘려보내야 다음 데이터가 들어옴.
package ex18; import java.io.BufferedWriter; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.util.Scanner; public class Buff05 { public static void main(String[] args) { PrintWriter out = new PrintWriter(System.out, true); out.println("Hello World"); Scanner sc = new Scanner(System.in); System.out.println(sc.nextLine()); } }
notion image

예제3. 텍스트 파일 읽기

package ex18; import java.io.*; public class Buff05 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader( new InputStreamReader(new FileInputStream("test.txt")) ); String line = br.readLine(); System.out.println(line); } catch (IOException e) { throw new RuntimeException(e); } } }
notion image
Share article

gunwoo