[Java] BufferedReader와 BufferedWriter

SeoYoon·2024년 11월 13일

💗JAVA

목록 보기
16/21

1. 📝BufferedReader

: BufferedReader는 문자 입력 스트림을 버퍼링하여 데이터를 읽는 데 사용됨. 버퍼를 사용하면 데이터를 한 문자씩 읽는 것보다 더 효율적이어서 입력 속도가 빨라짐.


1-2. 📝BufferedReader 사용법

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();

- InputStreamReader를 통해 바이트 기반 스트림(System.in)을 문자 기반 스트림으로 변환

- BufferedReader는 한 번에 많은 데이터를 읽어들인 후, 버퍼에 저장하여 필요할 때 꺼내 사용

- readLine() 메서드를 사용하여 한 줄씩 입력을 받을 수 있음

- br.readLine() : 한 줄의 문자열을 읽어 반환하고 입력이 끝나면 null을 반환함

- Scanner보다 빠른 입력 속도

- 온라인 저지에서 많은 양의 입력을 처리할 때 유용함



2. 💻BufferedWriter

: BufferedWriter는 문자 출력 스트림을 버퍼링하여 데이터를 출력하는 데 사용됨. 버퍼를 사용하기 때문에 System.out.println보다 효율적



2-1. 💻BufferedWriter 사용법

BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write((A+B) + "\n");

- OutputStreamWriter를 통해 바이트 기반 스트림(System.out)을 문자 기반 스트림으로 변환
- BufferedWriter는 데이터를 버퍼에 쌓아두었다가 한꺼번에 출력
- "\n" : 개행 문자로, 한 줄씩 출력하기 위해 사용
- write() 를 호출해도 실제로 출력되지 않고, 버퍼에 쌓여 있다가 flush()가 호출되면 한꺼번에 출력



3. 🛠️flush()

: flush() 메서드는 버퍼에 있는 데이터를 강제로 출력



3-1. 🛠️특징 및 설명

- BufferedWriter는 데이터를 버퍼에 쌓아두었다가 한 번에 출력하기 때문에, 즉시 출력이 필요할 때 flush()를 사용함
- 반복문 내에서 flush()를 자주 호출하면 성능이 저하될 수 있으므로, 맨 마지막에 한 번만 호출하는 것이 좋음
- bw.flush()를 호출하면 그동안 write()로 버퍼에 쌓인 내용이 한꺼번에 출력됨
- 이 코드는 모든 출력을 한 번에 처리하여 시간을 절약함



4. ❌close()

- close() 메서드는 스트림을 닫고 시스템 자원을 해제함



4-1. ❌특징 및 설명

- close()를 호출하면 더 이상 입력 또는 출력을 할 수 없음
- 자원을 반납하여 메모리 누수를 방지함
- bw.close()를 호출하여 BufferedWriter 스트림을 종료하고, 사용한 자원을 시스템에 반환
- br.close()도 마찬가지로 BufferedReader를 닫는 데 사용
- try-with-resources 문법을 사용하면 close() 호출을 생략할 수 있음

profile
공부 기록

0개의 댓글