반응형
1. 보조 스트림 (Filter Streams)
- 기본 스트림을 감싸서 기능을 확장하는 역할
- 입력 스트림: BufferedInputStream, DataInputStream
- 출력 스트림: BufferedOutputStream, DataOutputStream, PrintStream
- 단독 사용 불가 → 반드시 기본 스트림을 감싸야 함
1) BufferedInputStream / BufferedOutputStream
- 기본 스트림(InputStream/OutputStream)을 감싸서 버퍼(buffer) 메모리를 활용하여 입출력 효율을 높이는 보조 스트림
- 데이터가 1바이트씩 처리되는 기본 스트림의 단점(느림)을 보완하기 위해 한 번에 블록 단위로 처리
-> 디스크 I/O 최소화 → 성능 향상 - BufferedInputStream은 내부 버퍼에 데이터를 미리 읽어두고, 프로그램이 요청할 때마다 버퍼에서 꺼냄
- BufferedOutputStream은 출력 내용을 먼저 버퍼에 모은 뒤 일정 크기에 도달하거나 flush() 호출 시 한꺼번에 출력
- 네트워크 스트림, 파일 입출력에서 자주 사용
- BufferedReader/BufferedWriter의 바이트 버전
2) DataOutputStream / DataInputStream
- 자바의 기본 데이터 타입(int, double, boolean 등)을 순서대로 스트림에 기록하거나 읽어올 수 있게 해주는 보조 스트림
- 객체 직렬화와는 다르게, 명시적으로 타입을 기록/읽기 하므로 일관성 있는 데이터 처리에 유리
-> CSV보다 정확한 데이터 타입 관리가 필요할 때 사용 - writeInt(), writeDouble(), writeUTF() 등: 데이터 타입별 저장
- readInt(), readDouble(), readUTF() 등: 타입에 맞게 읽기
- 네트워크로 데이터를 주고받을 때 정형화된 구조 제공
3) PrintStream
- 자바에서 콘솔이나 파일에 편리하게 출력할 수 있도록 도와주는 출력 스트림
- OutputStream을 확장한 보조 스트림으로, 형식화된 텍스트 출력에 특화
- System.out도 PrintStream 객체로, print(), println(), printf() 등 다양한 출력 메서드 지원
- 자동 flush 설정 가능 (new PrintStream(..., true))
- 예외 발생 시 예외를 던지지 않고 자체 처리
- 콘솔 로그 출력(System.out 자체가 PrintStream), 디버깅 정보 기록, 파일 로그 시스템, 형식 지정 출력에 사용
2. 입출력 관련 API
1) File
- 파일/디렉토리의 존재 여부, 이름, 경로, 권한 등을 확인하거나 변경
2) FileReader / FileWriter
- 문자 기반 입출력 API
- 텍스트 파일 읽고 쓰기에 적합
3) BufferedReader / BufferedWriter
- 줄 단위로 텍스트를 처리할 수 있어 실무에서 많이 사용
4) RandomAccessFile
- 파일을 임의 위치에서 읽고 쓸 수 있는 API
- 대용량 로그 파일, 바이너리 파일 처리에 유용
RandomAccessFile raf = new RandomAccessFile("log.dat", "rw");
raf.seek(100); // 100번째 바이트로 이동
raf.writeUTF("개발학생 로그");
반응형
'자바(JAVA) > 미니 프로젝트 & 기초 공부' 카테고리의 다른 글
Java 기초 또 다시 공부하기 19일차 - 컬렉션 프레임워크2(LIFO와 FIFO 컬렉션), 입출력 스트림(I/O 스트림) (0) | 2025.07.08 |
---|---|
Java 기초 또 다시 공부하기 18일차 - 스레드(스레드 제어), 컬렉션 프레임워크 (1) | 2025.07.07 |
Java 기초 또 다시 공부하기 17일차 - 기본 API 클래스(java.util 패키지), 스레드(멀티 스레드) (0) | 2025.07.02 |
Java 기초 또 다시 공부하기 16일차 - 기본 API 클래스(java.lang 패키지) (0) | 2025.06.20 |
Java 기초 또 다시 공부하기 15일차 - 예외 처리(예외 클래스, 예외 처리) (1) | 2025.06.18 |