본문 바로가기
기초 및 언어/▶ Java&JSP

36. Buffer

by 류딩이 2025. 8. 29.

📌 Java I/O : BufferedInputStream / BufferedOutputStream 정리

🔹 Buffer(버퍼)란?

  • 임시 기억 장치
  • 데이터를 모았다가 한 번에 처리하기 위해 사용됨
  • 입출력 시 속도를 향상시킴
  • 버퍼가 가득 차야 실제 목적지(파일 등)에 기록됨

2. 코드 예제

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class Ex04_Buffer {

    public static void main(String[] args) {

        FileInputStream fis = null;
        FileOutputStream fos = null;
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;

        try {
            // 파일 쓰기
            fos = new FileOutputStream("data.txt", false);
            bos = new BufferedOutputStream(fos, 5); // 버퍼 크기 5

            for (int i = 1; i <= 9; i++) {
                bos.write(i + 48); // '1'~'9' 아스키코드 기록
            }

            bos.flush(); // 남아 있는 데이터 강제 기록

            // 파일 읽기
            fis = new FileInputStream("data.txt");
            bis = new BufferedInputStream(fis, 5);

 

3. 실행 흐름 설명

  1. 쓰기 단계
    • 버퍼 크기는 5 → "12345"가 찼을 때 파일로 기록됨
    • "6789"는 버퍼에만 존재
    • flush() 실행 시 "6789"까지 기록됨
    • 최종적으로 data.txt 안에는 "123456789" 저장됨
  2. 읽기 단계
    • bis.read()로 한 바이트씩 읽음
    • '1'~'9'의 아스키코드 값 출력
      (예: '1' → 49, '2' → 50 ... '9' → 57)
  3. 마무리
    • close() 호출 시 flush 자동 수행 후 스트림 종료

4. 핵심 정리

  • BufferedOutputStream, BufferedInputStream → 보조 스트림 (속도 향상용)
  • 버퍼에 데이터가 가득 차야 실제로 파일에 기록됨
  • flush() 메서드로 강제 기록 가능
  • close() 시에도 자동으로 flush 후 종료됨

 

 

'기초 및 언어 > ▶ Java&JSP' 카테고리의 다른 글

38. SimpleJDBC (Select, Insert, Delete, Update)  (1) 2025.09.01
37. 문자 스트림 (FileReader / FileWriter / InputStreamReader)  (1) 2025.08.29
35. 바이트스트림  (0) 2025.08.26
34. HashMap  (1) 2025.08.26
33. HashSet  (0) 2025.08.26