티스토리 뷰

Java

Java BufferedReader 사용방법

범블루 2022. 4. 14. 21:34

 

Scanner 와 비슷하지만 다른 BufferedReader 에 대해 알아보자

 

1. Scanner 은 버퍼리더 보다 훨씬 활용적이다.

 

스캐너는 정수 값으로 int, short, long, 소수값으로 float,double를 구분지어 읽어들일 수 있고 String 값도 읽을 수있다. 반면에 BufferReader은 문자열 String값 밖에 읽지 못한다.

 

2. BufferedReader은 Scanner에 비해 상당히 큰 버퍼를 차지한다.

 

Scanner의 경우 (1KB) , BufferedReader은 (8KB) , 이것은 즉 긴 문자열이 포함된 파일을 읽을 시에는 BufferedReader을

추천하지만 내용이 짧을경우 Scanner을 사용하는 것을 추천한다.

 

3. BufferedReader은 Scanner보다 더 오래되었다.

 

 

BufferedReader 은 JDK 1.1 에서 부터 존재해 왔고 Scanner은 JDK 1.5realse 에서 처음 소개 됬다.

 

4. Scanner은 정규식을 사용하여 값을 파싱한다.

 

 

예를 들어 int, long, short, florat 혹은 double의 경우 nextInt(),nextLong(),nextShort(),nextFloat(), nextDouble() 과같은

함수들을 사용한다. 반면에 BufferedReader은 오직 문자열 값만을 읽기 때문에 readLine() 함수만을 사용한다.

 

5. 중요한 차이점은 BufferedReader의 경우 동기화를 사용하지만 Scanner은 사용하지 않는다.

 

 

즉 여러 스레드간에 Scanner은 공유할 수 없지만 BufferReader개체는 공유할 수 있다. 동기화를 사용하는 BufferedReader의 경우 single thread를 사용하는 Scanner보다 약간 느리다. 하지만 Scanner의 경우 정규식을 사용하여 값을 받으므로 이러한 속도 차이는 보상을 넘어 BufferedReader가 더 빠르게 문자열을 읽을 수 있게 된다.

 

아래 이미지를 참고하자

 

 

'Java' 카테고리의 다른 글

Java 박싱(Boxing) 과 언박싱 (unBoxing)  (0) 2022.04.19
Java Exception( 자주발생하는Exception )  (0) 2022.04.15
Java 예외처리  (0) 2022.04.14
Java 추상클래스 vs 인터페이스 차이  (0) 2022.04.13
Java 상속 관계  (0) 2022.04.08