[Java] Scanner vs BufferedReader
by Choi HyeSun
출처 LINK
java.util.Scanner
-
기본형과 문자열(String)을 분석할 수 있는 단순한 텍스트 스캐너 클래스
-
다른 타입들(기본형인지 문자형인지)을 읽기 위해서 정규표현식을 내부적으로 사용함
-
다음 메소드 제공 : nextLine(), nextInt(), nextFloat(), nextByte(), nextShort(), nextDouble(), nextLong(), next()
-
nextLine() 메소드를 nextLine()을 제외한 nextXXX() 메소드 후 호출시 Scanner 클래스에서 nextLine()이 콘솔에서 값을 읽지 않고 커서가 콘솔에 들어가지 않게 됨
-
nextXXX()와 nextLine() 사이에 nextLine() 메서드를 한 번 더 호출하면 nextLine()이 줄 바꿈 문자를 사용하기 때문에 문제가 발생하지 않음
-
nextXXX() 메소드는 줄 바꿈 문자를 무시하고 nextLine()은 첫 번째 줄 바꿈 문자까지 읽음
-
-
사용법
java.io.BufferedReader
-
문자 입력 스트림에서 텍스트를 읽는 클래스
-
문자의 순서(시퀀스)를 효율적으로 읽기 위하여 문자를 버퍼링
설명
-
Buffer
-
데이터를 한 곳에서 다른 곳으로 전송하기 전 일시적으로 그 데이터를 보관하는 임시 메모리 영역
-
입출력 속도 향상을 위해 버퍼 사용(속도 차이가 날 때, 묶어서 보내는 것이 더 효율적)
-
-
Stream
- 데이터의 흐름
-
BufferedReader : 문자 버퍼 입력, 라인(줄) 해석
- InputStreamReader : 바이트 스트림을 문자 스트림으로 변환
-
BufferedWriter : 문자 스트림에 버퍼 출력, 줄바꿈 사용
- OutputStreamWriter : 문자 스트림을 바이트 스트림으로 변환
-
BufferedWriter.flush : 버퍼 비우기
사용법
차이점
-
BufferedReader는 동기식
- BufferedReader는 Scanner보다 훨씬 큰 버퍼 메모리를 가지고 있음
-
스캐너 : 1KB char 버퍼, BuffredReader : 8KB byte 버퍼
- Scanner는 입력 데이터를 파싱, BufferedReader는 문자 시퀀스를 읽음
-
BuffreredReader는 스캐너에 비해 조금 빠름
Subscribe via RSS