본문으로 바로가기

[자바] 12.자바 IO에 BufferedReader, BufferedWriter 쓰는 이유?

category Language/자바 2021. 8. 1. 20:40
728x90
반응형
SMALL
IO에서 보통 스캐너,StringBuilder를 써서 println 으로  출력하고있는데 BufferedReader로 입력받고 BufferedWrtier를 써서 출력하는 방법도 알아냈다. 그러나 문득 궁금했다. 어떤차이일까? 왜쓰는 걸가? 바로 의문이 들어 정리한다.(항상 의문이 들땐 정리하고 기록하자..)

 


BufferedReader

:Scanner와 유사

사용법

BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //선언
String s = br.readLine(); //String
int i = Integer.parseInt(bf.readLine()); //기본값이 String이기에 Int로 형변환 필요
//사용되는 클래스에 예외 처리 필수 Throws IOException

BufferedWriter

:System.out.println()과 유사

사용법

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//선언
String a = "abcde";//출력할 문자열
bw.write(s);//출력
bw.newLine(); //줄바꿈 또는 bw.write(s+"\n");
bw.flush();//남아있는 데이터를 모두 출력시킴
bw.close();//스트림을 닫음
BufferedWriter 는 버퍼가 있기 때문에 반드시 flush, close를 호출하여 출력하고 닫아줘야한다.
또한 System.out.println()같이 자동개행처리가 없어서 직접 bw.write(s+"\n"); 또는 bw.newLine(); 를 선언하여 개행처리를 해주어야 한다,
추가)
writer는 문자형만 출력 할 수 있으므로 int 형 출력시
형변환이 필요하다.
ex)
buf.write(String.valueOf(int형데이터));

버퍼를 사용하는것이 훨씬 빠르다  왜?

https://jhnyang.tistory.com/92

스캐너와 같은것은 키보드에서 입력이 끝나면 입력내용을 한번에 보내는데 비해서
버퍼는 한글자씩 입력이 되자마자 전송을 준비하기위해 임시로 저장되는 메모리 영역에 한글자씩 저장된다.
그리고 마찬가지로 엔터라는 개행문자가 입력이되면 모든 문자들이 전송이 되는데
이 메모리 버퍼의 유무로 인해서 속도가 훨씬 빠르다고 한다. 즉, 버퍼는 입출력 속도를 향상하기 위해 존재하는 임시 메모리 공간임을 기억하자
728x90
반응형
LIST