본문 바로가기
Programming/Java

[JAVA] 입력 - BufferedReader(ft. BufferedWriter)

by 코딩하는 랄로 2023. 9. 19.
728x90

BufferedReader

저번 시간에 배운  Scanner이 외에도 BufferedReader를 통해서도 입력을 받을 수 있다. BufferedReader를 사용하기 위해서는 두가지의 Class를 import 해야 한다.

 

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

 

둘 다 Java의 io 패키지 안에 있는 클래스 이기 때문에 다음과 같이 한줄로도 선언할 수 있다.

 

import java.io.*   // *은 all을 뜻하기 때문에 io 패키지 안에 있는 모든 클래스를 import

 

InputStreamReader 클래스도 필요한 이유는 BufferedReader 클래스를 통해 Object를 선언할 때 매개변수로 넘겨주어야 하기 때문이다.

 

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

 

BufferedReader 클래스의 메소드를 사용할 수 있는 객체를 선언해주었기 때문에 해당 메소드를 사용할 수 있다.

 

  • (int) read() : 한 글자만 읽어 정수형으로 반환.(Reads a single character.)
  • (int)read(char[] cbuf, int offset, int length) : cbuf의 offset위치부터 length만큼 문자를 읽어옵니다.
  • (String) readLine() : 한 줄을 읽어 String으로 반환.(Reads a line of text.)

 

 

BufferedWriter

BufferedWrite는 출력을 담당하는 Class이다. 선언방법으로는 다음과 같다.

import java.io.BufferedWriter;
import java.io.OutputStreamWriter;

//declare
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

 

bufferedwriter를 통해 console창에 출력을 하는 방법은 기존의 방식과는 달리 다음과 같이 사용한다.

 

bw.write( [ 원하는 출력 ] );
bw.flush();   // buffer에 있는 값을 모두 출력

 

bw.write를 통해서 원하는 출력값을 버퍼에 기입하고 flush()를 통해 출력시킨다.

 

bufferedreader, bufferedwrite 사용 후에는 close 메소드를 통해 종료시켜주어야 한다.

 

 

 

Scanner VS BufferedReader

  • Buffer에 입력데이터를 모아서 한번에 전달하기 때문에 속도,효율성 측면에서 성능이 좋다.
  • 대용량의 입출력 데이터를 다루는 데 유용하다.

코딩 문제를 풀다보면 대용량의 입출력 데이터를 다루는 경우가 많은 데 그럴경우 Scanner를 사용하는 것보다 BufferedReader를 사용하면 훨씬 코드가 빨라진다.

728x90

'Programming > Java' 카테고리의 다른 글

[Java] 연산자 - SCE, 비트  (0) 2023.09.20
[Java]연산자 - 부호, 증감, 비교, 논리  (0) 2023.09.20
[JAVA] 연산자 - 대입  (0) 2023.09.20
[JAVA] 입력 - Scanner  (0) 2023.09.19
[JAVA] 변수(Variables)  (0) 2023.09.19