본문 바로가기
Java

[Java] 스트림(Stream) / 기반 스트림과 보조 스트림 / 바이트 단위 스트림과 문자 단위 스트림 / 입력 스트림과 출력 스트림

by bkuk 2022. 10. 13.

입출력은 프로그램의 가장 기본 기능입니다.

외부 저장 장치나 네트워크와 연동해야 하기 때문에 장치에 따라 다르게 구현해야 합니다.

 

스트림(Stream)이란? 

 

Java에서 모든 입출력은 스트림(Stream)을 통해 이루어집니다. 자료 흐름이 물의 흐름과 같다는 의미에서 사용되고 있습니다.

Java에서는 입출력 장치와 무관하고 일관성 있게 프로그램을 구현할 수 있도록 가상 통로인 스트림을 제공하고 있습니다. 자료를 읽어 들이려는 소스(Source)자료를 쓰려는 대상(target)에 따라 각각 다른 스트림 클래스를 제공합니다.

 

 

 

스트림을 크게 3가지로 분류할 수 있습니다.

  • 입력 스트림과 출력 스트림
  • 바이트 단위 스트림과 문자 단위 스트림
  • 기반 스트림과 보조 스트림

입력 스트림과 출력 스트림의 종류와 주요 키워드

 

종류(주요 키워드) 예시
입력 스트림(Input, Reader) FileInputStream, FileReader, BufferedInputStream, BufferedReader 
출력 스트림(Output, Writer) FileOutputStream, FileWriter, BufferedOutputSream, BufferedWriter 

 

어떤 대상으로부터 자료를 읽어 들일 때 사용하는 스트림을 입력 스트림이라고 합니다.

예를들면 어떤 동영상을 재상하기 위해 동영상 파일에서 자료를 읽을 때 사용합니다.

 

사용자가 쓴 글을 파일에 저장할 때는 출력 스트림을 사용합니다.

스트림은 단반향으로 자료가 이동하기 때문에 입력과 출력을 동시에 할 수 없습니다.


 

바이트 단위 스트림과 문자 단위 스트림의 종류와 주요 키워드

 

기본적으로 Java의 스트림은 바이트(byte) 단위로 자료의 입출력이 이루어집니다. Image, Video, Music 등 파일 대부분은 바이트 단위로 읽거나 쓰면 됩니다.

그러나, Java에서 하나의 문자를 나타내는 char형은 2바이트이기 때문에 1바이트만 읽으면 한글과 같은 문자는 깨집니다.

 

따라서 문자를 위해 문자 스트림을 별도로 제공하고 있습니다. 

종류(주요 키워드) 예시
바이트 단위 스트림(Stream) FileInputStream, FileOutputStream, BufferedInputStream, BufferedOutputStream 등
문자 단위 스트림(Reader, Writer) FileReader, FileWiter, BufferedReader, BufferedWriter 등

 


 

기반 스트림과 보조 스트림의 종류와 주요 키워드

 

기반 스트림읽어 들일 곳(소스)이나 써야 할 곳(대상)에서 직접 읽고 쓸 수 있으며 입출력 대상에 직접 연결되어 생성되는 스트림입니다.

보조 스트림직접 읽고 쓰는 기능은 없습니다. 항상 다른 스트림을 포함하여 생성됩니다.

종류 특징
기반 스트림 FileInputStream, FileOutputStream, FileReader, FileWriter 등
보조 스트림 InputStreamReader, OutputStreamWriter, BufferedInputStream, BufferedOutputStream 등

 

댓글