산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java BufferedOutputStream: 효율적 바이트 쓰기 완벽 해설

Java BufferedOutputStream: 효율적 바이트 쓰기 완벽 해설

명확한 설명과 실전 코드 스니펫을 통해 BufferedOutputStream 클래스의 설계, 사용법, 핵심 메서드를 마스터하세요.

java.io 패키지의 BufferedOutputStream 클래스는 다른 OutputStream을 래핑하여 바이트 수준 출력을 가속화합니다. 데이터를 메모리에 버퍼링하여 기본 장치에 대한 쓰기 연산 횟수를 줄임으로써, 특히 큰 파일의 경우 성능을 크게 향상시킬 수 있습니다.

추상 OutputStream 클래스를 상속하며 그 메서드들의 구체적 구현을 제공합니다.


BufferedOutputStream 작동 원리

스트림은 기본적으로 8KiB(8,192바이트) 버퍼를 내부적으로 할당합니다. write()가 호출되면 바이트는 먼저 이 버퍼에 저장됩니다. 버퍼가 가득 차거나 flush() 또는 close()가 호출될 때만 데이터가 기본 스트림으로 플러시됩니다.

디스크 I/O는 비용이 많이 들기 때문에 이 버퍼링 전략은 왕복을 줄이고 바이트 쓰기를 상당히 빠르게 만듭니다.


BufferedOutputStream 생성하기

클래스를 임포트하고 일반적으로 FileOutputStream인 OutputStream을 래핑합니다:

FileOutputStream file = new FileOutputStream("output.txt");
BufferedOutputStream buffer = new BufferedOutputStream(file);

버퍼 크기를 제어하려면 두 번째 인수를 제공합니다:

BufferedOutputStream buffer = new BufferedOutputStream(file, 16384); // 16 KiB 버퍼

더 큰 버퍼는 매우 큰 쓰기에 유리할 수 있지만, 기본 8KiB가 대부분의 시나리오에 적합합니다.


BufferedOutputStream의 핵심 메서드

이 클래스는 버퍼링 지원을 갖춘 OutputStream의 전체 메서드 세트를 구현합니다.

write()

예제: 텍스트를 파일에 쓰기

import java.io.*;

public class Main {
    public static void main(String[] args) {
        String data = "This is a line of text inside the file";
        try (FileOutputStream fos = new FileOutputStream("output.txt");
             BufferedOutputStream bos = new BufferedOutputStream(fos)) {
            bos.write(data.getBytes());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

이 프로그램을 실행하면 output.txt가 생성되며 다음 내용이 들어있습니다:

This is a line of text inside the file

참고: String.getBytes()는 플랫폼 기본 캐릭터셋을 사용하여 문자열을 바이트 배열로 변환합니다. 결정적 결과를 위해 캐릭터셋을 지정하세요(예: data.getBytes(StandardCharsets.UTF_8)).


flush()

버퍼링된 데이터를 기본 스트림에 즉시 쓰도록 강제합니다. 스트림을 닫기 전에 데이터 지속성을 보장해야 하거나 네트워크 소켓에 쓸 때 유용합니다.

BufferedOutputStream bos = new BufferedOutputStream(fos);
bos.write(data.getBytes());
bos.flush(); // 데이터 전송 보장

close()

스트림을 닫고 남은 데이터를 플러시하며 시스템 자원을 해제합니다. close() 호출 후 스트림을 다시 사용할 수 없습니다.


종합적인 레퍼런스는 공식 Java 문서를 참조하세요: BufferedOutputStream API.

java

  1. Java final 키워드 마스터: 변수, 메서드, 클래스에서의 활용
  2. Java instanceof 연산자 완벽 가이드: 기본 사용법부터 상속, 인터페이스까지
  3. Java 상속 마스터: 개념, 종류, 실전 예제 총정리
  4. Java 정적 중첩 클래스 이해: 용법, 내부 클래스와의 차이, 예제
  5. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  6. Java 싱글톤 패턴 완벽 가이드: 안전하게 구현하고 사용하기
  7. Java 리플렉션 마스터: 런타임에 클래스, 메서드, 필드 검사 및 조작
  8. Java ObjectOutputStream 마스터하기: 직렬화, 메서드, 실전 예제
  9. Java 제네릭 마스터하기: 재사용 가능하고 타입 안전한 코드 작성
  10. java.io로 Java 파일 작업 마스터하기 – 생성, 읽기, 쓰기 및 삭제