package CHAPTER13; // 패키지 선언

import java.io.DataInputStream; // 기본 데이터 타입을 읽기 위한 DataInputStream 클래스 가져오기
import java.io.DataOutputStream; // 기본 데이터 타입을 쓰기 위한 DataOutputStream 클래스 가져오기
import java.io.FileInputStream; // 파일 입력 스트림 클래스를 가져오기
import java.io.FileOutputStream; // 파일 출력 스트림 클래스를 가져오기
import java.io.IOException; // 입출력 예외 처리를 위한 IOException 가져오기

public class C13_05_DataStreamExample { // 데이터 스트림 예제 클래스
    public static void main(String[] args) {
        // 데이터 쓰기 (바이너리 파일 생성 및 데이터 저장)
        try (DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.bin"))) { // "data.bin" 파일에 데이터를 저장하기 위한 스트림 생성
            dos.writeInt(100); // 정수형 데이터(100) 저장
            dos.writeDouble(99.99); // 실수형 데이터(99.99) 저장
            dos.writeBoolean(true); // 논리형 데이터(true) 저장
        } catch (IOException e) { // 입출력 예외 발생 시 처리
            e.printStackTrace(); // 예외 정보 출력
        }

        // 데이터 읽기 (저장된 바이너리 데이터 불러오기)
        try (DataInputStream dis = new DataInputStream(new FileInputStream("data.bin"))) { // "data.bin" 파일을 읽기 위한 스트림 생성
            int intValue = dis.readInt(); // 저장된 정수형 데이터 읽기
            double doubleValue = dis.readDouble(); // 저장된 실수형 데이터 읽기
            boolean booleanValue = dis.readBoolean(); // 저장된 논리형 데이터 읽기

            // 읽어온 데이터 출력
            System.out.println("정수: " + intValue);
            System.out.println("실수: " + doubleValue);
            System.out.println("논리값: " + booleanValue);
        } catch (IOException e) { // 입출력 예외 발생 시 처리
            e.printStackTrace(); // 예외 정보 출력
        }
    }
}
