일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 2024우먼테크위크
- 자바
- spring
- 초등학생 코딩수업
- js
- Cos Pro
- spring boot
- 드론
- 코딩수업
- 자율주행자동차
- 뚜루뚜루
- 2023 ICT R&D 주간
- 알티노
- 스마트리움
- 콜백함수
- 서울시여성가족재단
- 코딩부트캠프
- Spring Security
- 이것이 자바다
- 도서관 수업
- 초등학교 코딩수업
- html
- 은평구립도서관
- 2024겨울방학 코딩부트캠프
- jsp
- CSS
- 초등학생 겨울방학 놀이
- transaction
- 핑퐁로봇
- Java
- Today
- Total
블로그
[JAVA] 입출력 스트림 (I/O stream) 본문
입출력의 정의
I/O : Input과 Output의 약자
입출력 : 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것
io 스트림(입출력 스트림)
스트림은 운영체제에 의해 생성되는 가상의 연결 고리를 의미하며, 중간 매개자 역할을 한다.
자바에서는 파일이나 콘솔의 입출력을 직접 다루지 않고, 스트림(stream)이라는 흐름을 통해 다룬다.
- 단방향통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다.
- 그래서 입출력을 동시에 수행하려면 입력스트림, 출력 스트림 모두 2개의 스트림이 필요하다.
- 일반적으로 FIFO(First-In-First-Out) 구조를 따른다.

입출력 스트림의 종류
- 바이트 스트림(Byte Stream): 바이트 스트림은 바이너리 데이터, 즉 그림, 멀티미디어 등 모든 종류의 데이터를 입출력할 때 사용됩니다. 이 스트림은 데이터를 8비트 바이트로 읽고 쓰는 데 사용됩니다. InputStream과 OutputStream 클래스 및 이들의 하위 클래스들이 이러한 바이트 스트림을 제공합니다.
- 문자 스트림(Character Stream): 문자 스트림은 문자를 입출력할 때 사용됩니다. 이 스트림은 데이터를 유니코드 문자 단위로 읽고 쓰는 데 사용됩니다. 주로 텍스트 파일과 같은 문자 데이터를 다룰 때 사용됩니다. Reader와 Writer 클래스 및 이들의 하위 클래스들이 이러한 문자 스트림을 제공합니다.
Chat GPT 답변
바이트 스트림(InputStream, OutputStream)
InputStream : 프로그램 외부 입력을 바이트 단위로 받기 위한 객체의 클래스 . 추상메서드
OutputStream : 프로그램 외부 출력을 바이트 단위로 받기 위한 객체의 클래스. 추상메서드

출력 스트림의 write(int b) 메소드 설명
public abstract void write(int b)
throws IOException
Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored.
이 메소드는 지정된 바이트를 출력 스트림에 쓰는 역할을 합니다. write 메소드의 일반적인 규약은 하나의 바이트가 출력 스트림에 쓰여진다는 것입니다. 쓰여질 바이트는 전달된 매개변수 b의 8개의 하위 비트입니다. b의 24개의 상위 비트는 무시됩니다. 이 메소드는 IOException을 던질 수 있습니다.

InputStream, OutputStream을 사용해서 그림 파일을 복사하는 예제
import java.io.*;
public class C06CopyFile {
public static void main(String[] args) {
// temp/dog.png 파일을
// temp/dog-copy.png 파일로 복사
String src = "temp/dog.png";
String des = "temp/dog-copy.png";
try {
InputStream is = new FileInputStream(src);
OutputStream os = new FileOutputStream(des);
try (is; os) {
byte[] data = new byte[1024];
int len = 0;
while ((len = is.read(data)) != -1) {
os.write(data, 0, len);
}
os.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
문자 스트림(Character Stream)
Reader : 문자기반 스트림
Writer : 문자기반 스트림
자바에서는 한 문자를 의미하는 char형이 2byte이기 때문에 바이트기반의 스트림으로 2byte인 문자를 처리하는 데 어려움이 있다.
문자데이터를 입출력 할 때는 문자기반 스트림을 사용하는게 좋다.
바이트기반 스트림에서 문자기반 스트림으로 변경
- InputStream -> Reader
- OutputStream -> Writer
- ByteArrayInputStream -> CharArrayReader


출처 : 자바의 정석(남궁성 저), 이것이 자바다(신용권 저), TCP School 사이트
'개발자 준비과정 > JAVA' 카테고리의 다른 글
깃 사용법 (0) | 2024.04.01 |
---|---|
[JAVA] 네트워크 (0) | 2024.03.29 |
[JAVA] 예외 처리 (1) | 2024.03.25 |
[JAVA] 스트림 - IntStream, reduce(), Optional<T> (0) | 2024.03.22 |
[JAVA] 스트림 기초 (0) | 2024.03.21 |