BufferedReader,BufferedWriter

염지은·2022년 3월 29일
0

java

목록 보기
45/45

Scanner와 sysout이 아닌
BufferedReader, BuffferedWriter에 대해 정의하고 사용법을 정리해 보면

Buffer란?

우선, buffer의 의미는 완충제,완충장치,완화하다 라는 의미를 가지고 있다.
프로그래밍에서 버퍼는 데이터 전송 시 사용되고, 데이터를 어디에 잠깐 보관하는
메모리의 영역을 뜻하며 데이터를 담아서 한 번에 전송한다는 뜻으로 이해하면 되겠다.

그렇다면 버퍼를 사용하는 이유는?

  • 문자를 묶어서 한 번에 전달하므로 전송시간이 적게 걸려 성능이 향상 됨
  • 사용자가 문자를 잘못 입력했을 경우 수정할 수 있다.
  • Scanner를 사용할 때보다 입출력에 효율이 좋음

ex)스케너를 이용한다면 하나씩 문자열을 옮겨야 하겠지만 버퍼는 모았다가 한번에 이동하니
효율성이 뛰어난 것

사용법

BufferedReader = Scanner
BufferedWriter = System.out.println

BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
String s = bf.readLine(); 
int i = Integer.parseInt(bf.readLine()); 
  1. bf를 선언해주고
  2. 문자열을 읽어옴
  3. 기본적으로 문자열로 읽어오기 때문에 다른타입으로 받으려면 변환을 꼭 시켜주어야 함
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));  
bw.write(s+"\n"); 
bw.flush();  
bw.close();   
  1. 버퍼값을 할당해 주기
  2. 버퍼에 있는 모든 값 출력하기
    (BufferedWriter는 System.out.println과 같이 자동개행기능이 없기 때문에
    개행을 해주어야 할 경우 \n으로 따로 처리해 주어야 함)
  3. 남아있는 데이터를 할당된 버퍼값에 모두 담지 않더라도 밀어내서 출력하기
  4. 스트림을 닫아줌

사용 예시

*백준 알고리즘 15552번

https://www.acmicpc.net/problem/15552

첫 줄에 테스트 케이스의 개수T가 주어진다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. 각 테스트 케이스마다 A+B를 한줄에하나씩 순서대로 출력하여라

public class Main {
	public static void main(String[] args) throws IOException  {
		BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;
		int count=Integer.parseInt(bf.readLine());
		for(int i=0;i<count;i++) {
		st = new StringTokenizer(bf.readLine());
		bw.write((Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken()))+"\n");
			
		}
		bw.close();
		
 	}
}

0개의 댓글