Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 집합관계
- 인텔리제이 한글 깨짐 해결법
- JAVA객체지향
- this예약어
- Java데이터 타입
- While
- 자바 멀티스레딩
- 생성자
- function
- 포함관계
- for문
- 반복문
- 시스템 환경 변수 편집
- 상수
- 메서드 오버로딩
- java변수
- break문
- IntelliJ IDEA
- 접근제어지시자
- Thread
- multi-threading
- 형 변환
- 연관관계
- OPP개념
- 메서드
- 인텔리제이 기초 설정
- continue문
- JAVA기초
- 컴파일
- Java
Archives
- Today
- Total
최원종의 개발 블로그
자바 I/O 개론 본문
I/O는 Input / Output의 약자.
프로그램이 외부와 데이터를 주고받는 모든 행위를 I/O라고 한다
System.out.println("Hello"); // Output : 프로그램 → 콘솔 화면
Scanner sc = new Scanner(System.in); // Input : 키보드 → 프로그램
I/O스트림(stream)
- 프로그램이 데이터를 읽고(Input), 내보내는(Output) 흐름

자바의 스트림 흐름 핵심 개념
[파일] ──── 스트림(Stream) ────► [프로그램]
데이터가 흐름
단방향성
- 데이터는 한 방향으로만 흐름
- 한 번 읽은 데이터는 되돌아갈 수 없음
순차적 접근
- 데이터는 들어온 순서대로 처리 됨
- 한 번 지나간 데이터는 다시 꺼낼 수 없음

I/O 클래스
방향 기준
읽기 → InputStream 또는 Reader
쓰기 → OutputStream 또는 Writer
데이터 종류 기준
이미지, 동영상, zip 등 → 바이트 기반 (InputStream / OutputStream)
텍스트, 한글 등 → 문자 기반 (Reader / Writer)
클래스 구조
java.io 패키지
│
├── 바이트 기반 (모든 종류의 파일)
│ InputStream ──► FileInputStream, BufferedInputStream
│ OutputStream ──► FileOutputStream, BufferedOutputStream
│
└── 문자 기반 (텍스트 파일 전용, 한글 안깨짐)
Reader ──► FileReader, BufferedReader, InputStreamReader
Writer ──► FileWriter, BufferedWriter, OutputStreamWriter
클래스 해석
FileInputStream = File(파일) + Input(읽기) + Stream(바이트)
= "파일에서 바이트로 읽기"
FileOutputStream = File(파일) + Out(쓰기) + Stream(바이트)
= "파일에서 바이트로 쓰기"
BufferedWriter = Buffered(버퍼) + Writer(문자 쓰기)
= "버퍼를 사용해서 문자로 쓰기"
스트림 체이닝 기능
스트림은 여러 개를 연결(체이닝)해서 기능을 확장할 수 있음
기반 스트림에 보조 스트림을 감싸서 기능을 추가하는 방식
// FileReader (파일 읽기) + BufferedReader (성능 향상 + 한 줄 읽기) 연결
BufferedReader br = new BufferedReader(new FileReader("example.txt"));
[파일] → FileReader → BufferedReader → [프로그램]
(문자 읽기) (버퍼 + readLine 기능 추가)
↑ 기반 스트림 ↑ 보조 스트림
클래스 선택 기준
텍스트 파일 (한글 포함 가능)
읽기 → FileReader 성능 필요하면 → BufferedReader
쓰기 → FileWriter 성능 필요하면 → BufferedWriter
이미지 / 동영상 / zip (바이너리 파일)
읽기 → FileInputStream 성능 필요하면 → BufferedInputStream
쓰기 → FileOutputStream 성능 필요하면 → BufferedOutputStream
키보드 입력
간단할 때 → Scanner
입력이 많을 때 → BufferedReader + InputStreamReader'Java > JAVA 유용한 클래스' 카테고리의 다른 글
| FileInputStream (0) | 2026.03.20 |
|---|---|
| 자바 표준 입출력( 키보드, 콘솔) (0) | 2026.03.20 |
| 멀티 스레딩(multi-threading) (0) | 2026.03.13 |
| Inner class(중첩 클래스) (0) | 2026.03.12 |
| Thread (0) | 2026.03.10 |
