Language/JAVA

[JAVA] BufferedWriter

굠민 2024. 12. 9. 11:19
개요

 

지금까지 출력 기능을 System.out.println()만 사용하다가 다른 분들 풀이를 보는데 다들 BufferedWriter을 사용하여 출력을 하는 걸 보고, 알아보고자 글을 작성한다. 

 

 

📍정의 

많은 양의 출력이 필요한 경우, BufferReader와 같이 동일하게 버퍼를 사용하는 것이 속도가 빠르기에 사용하는 기능

 

📍사용법

  • System.out.println("")처럼 출력과 개행을 동시에 하지 않기에 개행을 위해서는 newLine(); 혹은 bw.write("n")을 사용해야 한다.
  • BufferWrier의 경우 버퍼를 잡아 놓았기 때문에 사용한 뒤에 반드시 flush(), close()를 해주어야 한다.
  • close()를 하게 되면 출력 스트림이 닫아지기 때문에 다른 출력이 남아있다면 flush를 사용하면 된다. 
  • 예외 처리 : 파일이나 출력 스트림에 데이터를 쓰는 과정에서 예외가 발생할 수 있기에 , IOException을 처리하는 코드를 작성해야 한다. 

 

📍주요 메서드

void close() 스트림을 닫는다 (닫기 전 flush())
void flush() 스트림을 비운다
void newLine 개행 문자 역할
void write(char[] buf, int offset, int length) 버퍼 offset위치부터 length 크기 만큼 write
void write(int c) 한 글자 쓰기
void write(String s, int offset, int length) 문자열에서 offset에서부터 일정 길이 만큼 write

 

*flush() : BufferWriter은 기본적으로 데이터를 즉시 출력하지 않기에, 출력이 완료되기 전 flush()를 호출하여 버퍼에 남아있는 데이터를 강제로 출력할 수 있다. 또, 스트림을 닫을 때 자동 호출된다.

 

📍사용 예시

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;

public class BufferedWriterExample {
    public static void main(String[] args) {
        try {
            BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"));
            writer.write("Hello, World!");
            writer.newLine();  // 새로운 줄 삽입
            writer.write("BufferedWriter example.");
            writer.flush();  // 버퍼에 있는 내용을 파일에 쓰기
            writer.close();  // 스트림을 닫고 리소스를 해제
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}