BufferedReader / BufferWriter

종원유·2021년 12월 22일
0

Java

목록 보기
2/11
post-thumbnail

이 글은 이해한 내용을 정리하는 자기 참조용 글이다.

백준 알고리즘 문제를 풀면서 한동안 잊고 지냈던
BufferedReader / BufferWriter를 사용하게 되었다.

이 녀석들이 어떤 녀석들인지 알고 사용하기 위해서 녀석들에 대한 내용을 적어보고자 한다.

BufferedReader / BufferWriter
Buffer를 이용해서 읽고 쓰는 함수이다.
위 함수를 사용하면 버퍼를 사용함으로써 입출력을 효율적으로 할 수 있다.

하드디스크 및 키보드나 모니터와 같은 외부 장치의 경우 데이터 입출력은 생각보다 시간이 오래 걸리는 작업이다.
버퍼링 없이 키보드가 눌릴 때마다 눌린 문자의 정보를 목적지로 바로 이동시키는 것보다 중간에 메모리 버퍼를 둠으로써 데이터를 묶어서 한꺼번에 이동시키는 것이 훨씬 효율적이고 빠르다.

Buffer란 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 메모리의 영역이다.

BufferedReader

BufferedReader는 띄어쓰기나 엔터로 입력의 끝을 인식하기 때문에 따로 가공할 필요가 없어서 사용하기 매우 편리하다.
하지만 BufferedReader의 경우 데이터가 String으로 고정되기 때문에 데이터를 따로 가공해서 사용해야한다.


또, 자동으로 공백이나 개행을 끊어주던 Scanner와는 달리 BufferedReader는
StringTokenizer 혹은 String.split()함수를 이용해야 한다.

StringTokenizer 사용법

위의 사진을 절차대로 설명하자면 공백이 나오기 전까지
int n = 입력한 값 대입
공백이 나온 후
int k = 다음 공백이 나올 때까지 입력한 s값 대입.

st = new StringTokenizer(br.readLine());

다음 줄 입력 받음.

BufferedWriter

BufferedWriter는
write(), flush(), close()가 있다.

사용 방법은 write()를 사용하여 출력할 내용을 담고, flush()를 통해서 버퍼를 비워내는 동시에 콘솔에 출력한다.
그리고 출력이 끝난 후에는 close()를 통해서 스트림을 닫아준다.

주의사항
BufferedReader, BufferedWriter는 꼭 IOException처리를 해주어야 한다.

profile
개발자 호소인

0개의 댓글