BufferedOutputStream — 버퍼를 사용하는 출력 스트림
BufferedOutputStream — 버퍼를 사용하는 출력 스트림
BufferedOutputStream은 버퍼링된 출력 스트림을 구현하는 클래스예요. 이런 출력 스트림을 설정하면 애플리케이션은 매 바이트마다 기반 시스템을 호출하지 않고도 기반 출력 스트림에 바이트를 쓸 수 있어요. 즉 데이터를 내부 버퍼에 모아 두었다가 한 번에 기반 스트림으로 내보내기 때문에 빈번한 I/O 호출을 줄여 성능을 높여줘요.
본문
이 클래스는 java.io.OutputStream → java.io.FilterOutputStream을 상속하며 Closeable, Flushable, AutoCloseable을 구현합니다.
필드
protected byte[] buf— 데이터가 저장되는 내부 버퍼예요.protected int count— 버퍼에 있는 유효 바이트 수예요. 항상0부터buf.length사이이며buf[0]부터buf[count-1]까지가 유효한 바이트 데이터를 담아요.
생성자
BufferedOutputStream(OutputStream out)— 지정한 기반 출력 스트림에 데이터를 쓰는 새 버퍼 출력 스트림을 만들어요.BufferedOutputStream(OutputStream out, int size)— 지정한 기반 출력 스트림에 지정한 버퍼 크기로 데이터를 쓰는 새 버퍼 출력 스트림을 만들어요.size <= 0이면IllegalArgumentException을 던져요.
메서드
void write(int b)— 지정한 바이트를 이 버퍼 출력 스트림에 써요.IOException을 던질 수 있어요.void write(byte[] b, int off, int len)—off오프셋부터b배열의len바이트를 이 버퍼 출력 스트림에 써요. 보통 바이트를 버퍼에 저장하고 필요에 따라 기반 스트림으로 버퍼를 플러시해요. 요청 길이가 버퍼 크기 이상이면 버퍼를 플러시하고 바이트를 직접 기반 스트림에 써서, 중첩된BufferedOutputStream이 불필요하게 데이터를 복사하지 않도록 해요.IndexOutOfBoundsException(off 음수, len 음수, len이b.length - off보다 큼),IOException을 던질 수 있어요.void flush()— 이 버퍼 출력 스트림을 플러시해 버퍼링된 출력 바이트를 기반 출력 스트림에 강제로 써요.Flushable에서 지정됐고IOException을 던질 수 있어요.
BufferedOutputStream을 쓰면 버퍼를 통해 출력 시스템 호출 횟수를 줄여 성능을 개선할 수 있어요.