본문 바로가기
Java

BufferedReader/BufferedWriter

by Mecodata 2023. 12. 19.

Buffer 

출처 : https://kimby.tistory.com/23

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

- Buffer를 사용하지 않을 경우 데이터가 입/출력 될때마다 바로 전송되지만 Buffer를 사용할 경우에는 Buffer에 정해진 용량이 가득 차거나 개행 문자(\)가 인식되어야 모아진 데이터가 한 번에 전송됨

- 쓰레기를 생길 때마다 버리는 것(버퍼 X)과 쓰레기를 한번에 모았다가 버리는 것(버퍼 O)의 차이 → Buffer를 사용하는 것이 더 효율적

 

BufferedReader 

- java.io.BufferedReader

- Java에서 입출력 스트림에서 데이터를 읽을 때 버퍼링을 제공하는 클래스

- 주로 텍스트 파일이나 문자열에서 데이터를 읽을 때 사용

- readLine()을 통해 데이터를 읽으면 해당 데이터는 String으로 반환됨

BufferedReader br = new BufferedReader(new InputStreamReader());

주요 메소드

- read() = 한 글자만 읽어서 int로 반환

- readLine() = 한 줄을 읽어 String으로 반환

- skip(Long n) = n개의 문자를 건너뜀 

- close() = 입력스트림 닫기

Scanner와의 비교

  Scanner BufferedReader
성능 상대적으로 떨어짐 상대적으로 더 뛰어남 (5초 정도 빠름)
버퍼 사이즈 1024 char (2048 byte) 8192 char (16384 byte)
경계 인식 띄어쓰기 + 개행문자(\) 개행문자(\)
형식 다양한 형식 (nextInt, nextBoolean 등) 기본적으로 문자열 기반 (String)
사용 편의성 높음 떨어짐(한 줄씩 읽음 - readLine)
예외 처리 직접 처리 or 회피(hasNext) IOException
버퍼링 지원하지만 입출력 성능에 최적화 X 지원하며 입출력 성능에 최적화됨
Thread-safe X (동기화 보장 X)  O (동기화 보장)
스레드 환경 싱글 스레드 멀티 스레드

BufferedWriter 

- java.io.BufferedWriter

- Java에서 입출력 스트림에서 데이터를 출력할 때 버퍼링을 제공하는 클래스

- System.out.println()과 같은 기능이지만 출력할 데이터가 대용량일 경우 더 효율적

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); 
String a = "String"; // 출력할 문자열
bw.write(a); // 출력
bw.newLine(); // 줄바꿈(Enter)
bw.flush(); // 남아있는 데이터 모두 출력
bw.close();

주요 메소드

- write() = 버퍼에 쓰기

- newLine() = 줄 바꿈(Enter)

- flush() = 버퍼에 남아있는 데이터 모두 출력 

close() = 입력스트림 닫기

'Java' 카테고리의 다른 글

java.io.File  (0) 2023.12.20
java.io.InputStream & OutputStream  (0) 2023.12.20
java.io.Reader & Writer  (0) 2023.12.20
java.util.Properties  (0) 2023.12.19
java.net.HttpURLConnection  (0) 2023.12.19

댓글