English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 대상 지향(I)

Java 대상 지향(II)

Java 대상 지향(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력/출력(I/O)

Java Reader/Writer

Java 다른 주제

Java BufferedWriter 클래스

이 튜토리얼에서는 예제를 통해 Java BufferedWriter 및 메서드를 배울 것입니다.

java.io 패키지의 BufferedWriter 클래스는 다른 쓰기기와 함께 사용하여 데이터(문자 단위로)를 더 효율적으로 쓸 수 있습니다.

추상 클래스 Writer를 상속받습니다.

BufferedWriter의 작동 방식

BufferedWriter는 내부의8192자소문자 버퍼

쓰기 작업 중에는 문자가 디스크 대신 내부 버퍼에 쓰입니다. 버퍼가 가득 차거나 쓰기기가 닫히면, 버퍼에 있는 모든 문자가 디스크에 쓰입니다.

따라서, 디스크와의 통신 횟수가 줄어듭니다. 이것이 BufferedWriter를 사용하여 문자를 쓰는 것이 더 빠른 이유입니다.

BufferedWriter 생성

BufferedWriter를 생성하기 위해 먼저 java.io.BufferedWriter 패키지를 가져와야 합니다. 패키지를 가져온 후, 버퍼드 쓰기기 생성이 가능합니다.

//FileWriter를 생성합니다
FileWriter file = new FileWriter(String name);
//BufferedWriter를 생성합니다
BufferedWriter buffer = new BufferedWriter(file);

위의 예제에서는 buffer라는 BufferedWriter와 file이라는 FileWriter를 생성했습니다.

이곳에서 BufferedWriter의 내부 버퍼의 기본 크기는8192자소문자. 그러나, 내부 버퍼의 크기를 지정할 수도 있습니다.

//지정된 크기의 내부 버퍼를 가진 BufferedWriter를 생성합니다
BufferedWriter buffer = new BufferedWriter(file, int size);

버퍼는 문자를 파일에 더 효율적으로 기록하는 데 도움이 됩니다.

BufferedWriter의 메서드

BufferedWriter 클래스는 Writer에 존재하는 다양한 메서드의 구현을 제공합니다.

write() 메서드

  • write() - 단일 문자를 작성기의 내부 버퍼에 기록합니다

  • write(char[] array) - 지정된 배열의 문자를 작성기에 기록합니다

  • write(String data) - 지정된 문자열을 작성기에 기록합니다

예제: 파일에 데이터를 기록하는 BufferedWriter

import java.io.FileWriter;
import java.io.BufferedWriter;
public class Main {
  public static void main(String args[]) {
    String data = "This is the data in the output file";
    try {
      //FileWriter를 생성합니다
      FileWriter file = new FileWriter("output.txt");
      //BufferedWriter를 생성합니다
      BufferedWriter output = new BufferedWriter(file);
      //문자를 파일에 기록합니다
      output.write(data);
      //writer를 닫습니다
      output.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

위의 예제에서는 output이란 이름의 버퍼 작성器和 파일 작성기를 생성했습니다. 버퍼 작성기는 output.txt 파일과 연결되어 있습니다.

FileWriter file = new FileWriter("output.txt");
BufferedWriter output = new BufferedWriter(file);

데이터를 파일에 기록하려면 write() 메서드를 사용했습니다.

여기서, 우리가 프로그램을 실행할 때,output.txt파일은 다음과 같은 내용으로 채워질 것입니다.

This is a line of text inside the file.

flush() 메서드

내부 버퍼를 지우기 위해 flush() 메서드를 사용할 수 있습니다. 이 메서드는 작성기가 버퍼에 있는 모든 데이터를 표적 파일에 강제로 기록하도록 합니다.

예를 들어, 우리가output.txt의 비어 있는 파일입니다。

import java.io.FileWriter;
import java.io.BufferedWriter;
public class Main {
  public static void main(String[] args) {
    String data = "This is a demo of the flush method";
    try {
      //FileWriter를 생성합니다
      FileWriter file = new FileWriter("flush.txt");
      //BufferedWriter를 생성합니다
      BufferedWriter output = new BufferedWriter(file);
      //데이터를 파일에 쓰기
      output.write(data);
      //데이터를 목표로刷新합니다
      output.flush();
      System.out.println("데이터가 파일로刷新됩니다.");
      output.close();
    }
    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

출력 결과

데이터가 파일로刷新됩니다.

프로그램을 실행할 때, 파일output.txt문자 데이터로 표현된 텍스트로 채워집니다.

close() 메서드

버퍼를 닫는 writer를 사용하려면 close() 메서드를 사용할 수 있습니다. close() 메서드를 호출한 후에는 writer를 통해 데이터를 쓰는 것이 불가능합니다.

BufferedWriter의 다른 메서드

메서드설명
newLine()저자에 새 줄을 삽입합니다
append()지정된 문자를 현재 작성기에 삽입합니다