package CHAPTER13; // 패키지 선언

import java.io.FileInputStream;      // 바이트 기반 파일 입력 스트림 클래스
import java.io.FileOutputStream;     // 바이트 기반 파일 출력 스트림 클래스
import java.io.InputStreamReader;    // 바이트 → 문자 변환 입력 스트림 클래스
import java.io.OutputStreamWriter;   // 문자 → 바이트 변환 출력 스트림 클래스
import java.io.IOException;          // 입출력 예외 처리 클래스

public class C13_08_ByteToCharStreamExample {
    public static void main(String[] args) {
        // try-with-resources를 사용하여 자원 자동 해제
        try (
            InputStreamReader isr = new InputStreamReader(new FileInputStream("input.txt"), "UTF-8");
            OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("output.txt"), "UTF-8");
        ) {
            int data; // 한 문자씩 읽을 변수 선언

            // input.txt 파일에서 데이터를 한 문자씩 읽고 output.txt에 기록
            while ((data = isr.read()) != -1) {
                osw.write(data);
            }

            System.out.println("파일 복사가 완료되었습니다.");

        } catch (IOException e) {
            System.out.println("입출력 오류가 발생했습니다: " + e.getMessage());
        }
    }
}

