I/O 스트림
스트림과 I/O 스트림의 차이
스트림은 데이터를 어떤 형태로 걸러내고 가공하는 것인지 즉 데이터를 목적에 맞게 걸러내거나 가공하는데 있습니다.
하지만 I/O스트림은 데이터의 입력과 출력입니다.
I/O 스트림
- 파일
- 키보드와 모니터
- 그래픽카드, 사운드카드
- 프린터, 팩스 등 출력장치
- 서버 또는 클라이언트
입출력 대상은 다양하여 코드상의 입출력도 다양해지는 것이 일반적입니다. 하지만 자바에서는 동일한 방법으로 입출력이 가능합니다.
자바 스트림에는 두 가지가 있습니다.
- 입력 스트림(Input Stream) : 실행 중인 자바 프로그램으로 데이터를 읽어오는 스트림
- 출력 스트림(Output Stream) : 실행 중인 자바 프로그램으로 데이터를 내보내는 스트림
자바 I/O스트림에는 두 가지 카테고리가 존재합니다.
- 바이트 스트림 (Byte Streams): 바이트 단위로 데이터를 처리합니다. 이들은 이진 데이터와 문자 데이터 모두를 다룰 수 있습니다.
- 문자 스트림 (Character Streams): 문자 단위로 데이터를 처리합니다. 주로 문자 데이터의 읽기와 쓰기에 사용됩니다.
바이트 스트림 (Byte Streams)
바이트 스트림은 바이트 단위로 데이터를 읽고 씁니다. 주로 파일, 네트워크 소켓 등에서 이진 데이터를 처리할 때 사용됩니다.
주요 클래스로는
- InputStream: 바이트 입력 스트림의 최상위 클래스입니다. 주로 데이터를 읽는 데 사용됩니다.
- FileInputStream: 파일에서 바이트를 읽는 데 사용됩니다.
- BufferedInputStream: 데이터를 버퍼링하여 읽기 성능을 향상시킵니다.
- DataInputStream: 기본 데이터 타입을 읽는 데 사용됩니다.
- OutputStream: 바이트 출력 스트림의 최상위 클래스입니다. 주로 데이터를 쓰는 데 사용됩니다.
- FileOutputStream: 파일에 바이트를 쓰는 데 사용됩니다.
- BufferedOutputStream: 데이터를 버퍼링하여 쓰기 성능을 향상시킵니다.
- DataOutputStream: 기본 데이터 타입을 파일에 쓰는 데 사용됩니다.
import java.io.FileOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
String data = "Hello, Byte Streams!";
// 바이트 스트림을 사용하여 데이터 쓰기
try (FileOutputStream fos = new FileOutputStream("Java/iostream/test.txt")) {
fos.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
// 바이트 스트림을 사용하여 데이터 읽기
try (FileInputStream fis = new FileInputStream("Java/iostream/test.txt")) {
int content;
while ((content = fis.read()) != -1) {
System.out.print((char) content);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
실행 후 test 파일

'Programming > Java' 카테고리의 다른 글
스트림 (0) | 2024.08.13 |
---|---|
람다 (0) | 2024.08.11 |
중첩 클래스 (0) | 2024.08.11 |
열거형, 가변인자, 어노테이션 (0) | 2024.08.11 |
컬렉션 프레임워크 (0) | 2024.08.10 |