본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

BufferedInputStream BufferedOutputStream 스트림의 입출력 효율을 높이는 보조스트림

BufferedInputStream BufferedOutputStream 스트림의 입출력 효율을 높이는 보조스트림

한바이트씩 입출력하지않고 버퍼를 이용해 한꺼번에 여러 바이트를 입출력한다.

 


BufferedInputStream 클래스는 두 가지 생성자를 제공한다.

기본은 기본 버퍼 크기(8,192 바이트)를, 두개의 매개변수는 지정된 입력 스트림과 버퍼 크기를 사용한다.
BufferedInputStream(InputStream in)
BufferedInputStream(InputStream in, int size)

import java.io.*;

public class BufferedInputStreamExample {
    public static void main(String[] args) {
        try {
            // FileInputStream을 사용하여 파일에서 데이터를 읽는 입력 스트림 생성
            InputStream inputStream = new FileInputStream("input.txt");
            
            // 기본 버퍼 크기(8,192 바이트)를 사용하여 BufferedInputStream 생성
            BufferedInputStream bufferedInputStream1 = new BufferedInputStream(inputStream);
            // 사용자가 지정한 버퍼 크기(4,096 바이트)를 사용하여 BufferedInputStream 생성
            BufferedInputStream bufferedInputStream2 = new BufferedInputStream(inputStream, 4096);

            // 데이터 읽기 작업 수행
            // 이때 BufferedInputStream은 내부적으로 버퍼를 사용하여 데이터를 읽음

            // 스트림 닫기
            bufferedInputStream1.close();
            bufferedInputStream2.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

 

 

BufferedOutputStream
데이터를 쓸 때 버퍼에 데이터를 미리 쌓아두고 한 번에 버퍼에 쌓인 데이터를 출력 스트림으로 내보내는 방식을 사용한다.

BufferedOutputStream 클래스는 두 가지 생성자를 제공한다.
기본은 기본 버퍼 크기(8,192 바이트)를, 두개의 매개변수는 지정된 출력 스트림과 버퍼 크기를 사용한다.
BufferedOutputStream(OutputStream out)
BufferedOutputStream(OutputStream out, int size)

flush(): 버퍼에 쌓인 모든 데이터를 출력 스트림으로 내보내 버퍼가 가득차지않았더라도 데이터를 출력할 수 있다.
close(): 출력스트림을 닫는다.

import java.io.*;

public class BufferedOutputStreamExample {
    public static void main(String[] args) {
        try {
            // FileOutputStream을 사용하여 파일에 데이터를 쓰는 출력 스트림 생성
            OutputStream outputStream = new FileOutputStream("output.txt");
            
            // 기본 버퍼 크기(8,192 바이트)를 사용하여 BufferedOutputStream 생성
            BufferedOutputStream bufferedOutputStream1 = new BufferedOutputStream(outputStream);
            // 사용자가 지정한 버퍼 크기(4,096 바이트)를 사용하여 BufferedOutputStream 생성
            BufferedOutputStream bufferedOutputStream2 = new BufferedOutputStream(outputStream, 4096);

            // 데이터 쓰기 작업 수행
            // 이때 BufferedOutputStream은 내부적으로 버퍼를 사용하여 데이터를 씀

            // 모든 버퍼의 데이터를 출력 스트림으로 내보냄
            bufferedOutputStream1.flush();
            bufferedOutputStream2.flush();

            // 스트림 닫기
            bufferedOutputStream1.close();
            bufferedOutputStream2.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}