스트림이란?

자바에서 데이터는 스트림(Stream)을 통해 입출력 된다.

스트림이란 단일 방향으로 연속적으로 흘러가는 것을 의미하는데, 데이터가 출발지에서 도착지로 흘러가는 것을 의미한다.

  • 입력 스트림(InputStream) : 프로그램으로 데이터를 읽어드리는 스트림. 프로그램이 도착지인 경우 사용
  • 출력 스트림(OutputStream) : 프로그램으로 데이터를 내보내내는 스트림. 프로그램이 출발지인 경우 사용

 

https://kerpect.tistory.com/52

 

입출력 스트림의 종류

  • 바이트(Byte)기반 스트림: 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할 때 사용
  • 문자(Character)기반 스트림: 문지 데이터를 읽고 출력할 때 사용
구분 바이트 기반 스트림 문자기반 스트림
입력 스트림 출력 스트림 입력 스트림 출력 스트림
최상위 클래스 InPutStream OutputStream Reader Writer
하위 클래스(예) XXXInPutStream
( FileInPutStream )
XXXOutputStream
( FileOutputStream )
XXXReader
( FileReader )
XXXWriter
( FileWriter )

 

바이트 출력 스트림 : OutputStream

  • OutputStream은 바이트 기반 출력 스트림의 최상위 클래스로 추상클래스 이다.

 

https://www.javadeploy.com/java-streams/module2/input-output-stream-subclasses.jsp

 

  • OutputStream의 주요 메소드
리턴타입 메소드 설명
void write(int b)  1byte를 출력합니다.
void write(byte[ ] b)  매개값으로 주어진 배열 b의 모든 바이트를 출력합니다.
void write(byte[ ] b, int off, int len)  매개값으로 주어진 배열 b[off]부터 len개까지의 바이트를 출력합니다.
void flush()  출력 버퍼에 잔류하는 모든 바이트를 출력합니다.
void close()  출력 스트림을 닫습니다.

 

바이트 입력 스트림 : InputStream

  • InputStream은 바이트 기반 출력 스트림의 최상위 클래스로 추상클래스 이다.
  • InputStream의 주요 메소드
리턴 타입 메소드 설명
int read()  1byte를 읽고 읽은 바이트를 리턴합니다.
int read(byte[ ] b)  읽은 바이트를 매개값으로 주어진 배열에 저장하고 읽은 바이트 수를 리턴합니다.
int read(byte[ ] b, int off, int len)  len개의 바이트를 읽고 매개값으로 주어진 배열에서 b[off]부터 len개까지 저장합니다. 그리고 읽은 바이트 수를 리턴합니다.
void close()  입력 스트림을 닫습니다.

 

문자 출력 스트림 : Writer

 

https://xzio.tistory.com/312

 

  • Writer는 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스이다.
  • Writer 클래스의 주요 메소드
리턴 타입 메소드 설명
void write(int c)  매개값으로 주어진 한 문자를 보냅니다.
void write(char[ ] cbuf)  매개값으로 주어진 배열의 모든 문자를 보냅니다.
void write(char[ ] cbuf, int off, int len)  매개값으로 주어진 배열에서 cbuf[off]부터 len까지의 문자를 보냅니다.
void write(String str)  매개값으로 주어진 문자열 보냅니다.
void write(String str, int off, int len)  매개값으로 주어진 문자열에서 off 순번부터 len개까지의 문자를 보냅니다.
void flush()  버퍼에 잔류하는 모든 문자를 출력합니다.
void close()  출력 스트림을 닫습니다.

 

문자 입력 스트림 : Reader

  • Reader는 문자 기반 입력 스트림의 취상위 클래스로 추상클래스 이다.
  • Reader의 주요 메소드
리턴 타입 메소드 설명
int read()  1개의 문자를 읽고 리턴합니다.
int read(char[ ] cbuf)  읽은 문자를 매개값으로 주어진 문자 배열에 저장하고 읽은 문자수를 리턴합니다.
int read(char[ ] cbuf, int off, int len) len개의 문자를 읽고 매개값으로 주어진 문자 배열에서 cbuf[off]부터 len개까지 저장합니다. 그리고 읽은 문자 수를 리턴합니다.
void close()  입력 스트림을 닫습니다.

 


 [ 키워드 정리 ] 

  • 입출력 스트림 : 자바에서 데이터는 스트림을 통해 입출력됩니다. 프로그램이 출발지냐 또는 도착지냐에 따라서 사용하는 스트림의 종류가 결정됩니다. 프로그램이 도착지이면 흘러온 데이터를 입력받아야 하므로 입력 스트림을 사용합니다. 반대로 프로그램이 출발지면 데이터를 출력해야 하므로 출력 스트림을 사용합니다.
  • InputStream : 바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스입니다. 모든 바이트 기반 입력 스트림은 InputStream 클래스를 상속받아서 만들어집니다. InputStream 클래스에는 바이트 기반 입력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있습니다.
  • OutputStream : 바이트 기반 출력 스트림의 최상위 클래스로 추상 클래스입니다. 모든 바이트 기반 출력 스트림 클래스는 OutputStream 클래스를 상속받아서 만들어집니다. OutputStream 클래스에는 모든 바이트 기반 출력 스트림이 기본적으로 가져가야 할 메소드가 정의되어 있습니다.
  • Reader : 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스입니다. 모든 문자 기반 입력스트림은 Reader 클래스를 상속받아서 만들어집니다. Reader 클래스에는 문자 기반 입력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있습니다.
  • Writer : 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스입니다. 모든 문자 기반 출력 스트림 클래스는 Writer 클래스를 상속받아서 만들어집니다. Writer 클래스는 모든 문자 기반 출력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있습니다.

출처 : 혼자 공부하는 자바 - 신용권 지음

'Coding > Java' 카테고리의 다른 글

[33] JAVA 보조 스트림  (2) 2023.01.24
[31] JAVA LIFO와 FIFO 컬렉션  (0) 2022.12.25
[30] JAVA 컬렉션 프레임워크  (0) 2022.12.25
[29] JAVA 스레드 제어  (0) 2022.12.21
[28] JAVA 멀티스레드  (0) 2022.12.21

+ Recent posts