빠른 출력을 위한 클래스 BufferedWriter

지식저장공간·2023년 2월 17일
0

Java

목록 보기
15/18

Java.io.BufferedWriter

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;

public class Main {
  public static void main(String[] args) throws IOException{
      BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
      
      // System.out : 기반 스트림
      // BufferedWriter의 메서드는 IOException에 대해 예외를 발생시킨다.
	  // IOException은 체크 예외이기 때문에 예외처리가 불가능할 경우 throws를 작성한다.
      
	  int num = 1;
    
      bw.write(num + "\n"); // 단일 문자 출력, 자동 개행 기능이 없기 때문에 "\n"을 추가하여 개행한다.
      bw.flush(); // 버퍼에 존재하는 모든 데이터를 비우고 System 콘솔창에 출력한다.
      bw.close(); // 스트림을 계속 가지고 있기 때문에 닫아준다.

  }
}

ex1) console : 11 16 21

int num = 1;
bw.write((num+10)+" "); 
bw.write((num+15)+" ");
bw.write((num+20)+" ");

ex2) console : 
11
16
21

int num = 1;
bw.write((num+10)+"\n"); 
bw.write((num+15)+"\n");
bw.write((num+20)+"\n"); 

버퍼를 사용하지 않는 입력은 키보드의 입력이 키를 누르는 즉시 프로그램에 전달된다.
반면 버퍼를 사용하는 입력은 키보드에 입력이 있을시 버퍼에 전송이 되고 버퍼가 가득차거나 개행문자가 나타나면 버퍼의 내용을 한번에 프로그램에 전달한다.

키보드 입력과 동시에 출력을하게되면 CPU에서는 I/O가 계속해서 발생하기 때문에, 컨텍스트 스위칭은 무거운 작업이여서 속도가 매우 느리다.

버퍼를 이용해서 입출력의 효율을 높일 수 있다.

참고 블로그 : https://blog.naver.com/cjy2103/222765711864

profile
발전하는 개발자가 꿈입니다. 지식을 쌓고 지식을 활용해 목표 달성을 추구합니다.

0개의 댓글