package CHAPTER13; // 패키지 선언

import java.io.BufferedReader; // 버퍼를 이용한 파일 읽기를 위한 BufferedReader 클래스 가져오기
import java.io.BufferedWriter; // 버퍼를 이용한 파일 쓰기를 위한 BufferedWriter 클래스 가져오기
import java.io.FileReader; // 파일 입력을 위한 FileReader 클래스 가져오기
import java.io.FileWriter; // 파일 출력을 위한 FileWriter 클래스 가져오기
import java.io.IOException; // 입출력 예외 처리를 위한 IOException 가져오기

public class C13_07_BufferedStreamExample { // 버퍼 스트림 예제 클래스
    public static void main(String[] args) {
        // 파일에 데이터 쓰기 (BufferedWriter 사용)
        try (BufferedWriter bw = new BufferedWriter(new FileWriter("buffered.txt"))) { // "buffered.txt" 파일을 쓰기 위한 버퍼 스트림 생성
            bw.write("버퍼 스트림을 사용하면 성능이 향상됩니다."); // 첫 번째 줄 작성
            bw.newLine(); // 개행 문자 삽입
            bw.write("이 문장은 두 번째 줄입니다."); // 두 번째 줄 작성
        } catch (IOException e) { // 입출력 예외 발생 시 처리
            e.printStackTrace(); // 예외 정보 출력
        }

        // 파일에서 데이터 읽기 (BufferedReader 사용)
        try (BufferedReader br = new BufferedReader(new FileReader("buffered.txt"))) { // "buffered.txt" 파일을 읽기 위한 버퍼 스트림 생성
            String line; // 읽은 한 줄의 데이터를 저장할 변수
            while ((line = br.readLine()) != null) { // 파일 끝(null)이 아닐 때까지 한 줄씩 읽기
                System.out.println(line); // 읽은 줄을 콘솔에 출력
            }
        } catch (IOException e) { // 입출력 예외 발생 시 처리
            e.printStackTrace(); // 예외 정보 출력
        }
    }
}
