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);
}
}
} 
예제 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());
}
}
예제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);
}
}
}
Share article