본문 바로가기
Language/Java

[Java] InputStream, OutputStream 개념

by IsBerry 2019. 4. 30.
반응형

데이터 입출력

 : 데이터는 사용자로부터 키보드, 마우스 등을 통해 입력 될 수 있고, 파일 또는 네트워크를 통해 입력될 수 있음.

   모니터, 파일 등으로도 출력할 수도 있음.

 

자바에서 데이터는 Stream을 통해 입출력됨.

*Stream은 단일 방향으로 연속적으로 흘러가는 것을 의미, 데이터는 출발지에서 나와 도착지로 흘러간다는 개념

 

프로그램이 출발지/도착지인지에 따라 스트림의 종류가 결정됨.

데이터를 입력 받을 때 - InputStream

데이터를 출력 할 때 - OutputStream

 

*프로그램이 네트워크상의 다른 프로그램과 데이터를 교환하기 위해서는 양쪽 모두 입력 스트림과 출력스트림이

  따로 필요함. 

  스트림은 단방향 통신을 한다는 특징이 있으므로, 하나의 스트림으로 입출력을 동시에 할 수 없기 때문에

 

Java.io 패키지

 자바의 기본적인 데이터 입출력은 Java.io 패키지에서 제공함. Java.io 패키지에서는 파일 시스템의 정보를 얻기 위한

 File클래스와 데이터를 입출력하기 위한 다양한 입출력 스트림 클래스를 제공함.

Java.io 패키지의 주요 클래스 설명
File 파일 시스템의 파일 정보를 얻기 위한 클래스
Console 콘솔로부터 문자를 입출력하기 위한 클래스
InputStream / OutputStream 바이트 단위 입출력을 위한 최상위 입출력 스트림 클래스
FileInputStream / FileOutputStream 바이트 단위 입출력을 위한 하위 스트림 클래스 
DataInputStream / DataOutputStream
ObjectInputStream / ObjectOutputStream
PrintStream
BufferedInputStream / BufferedOutputStream
Reader / Writer 문자 단위 입출력을 위한 최상위 입출력 스트림 클래스
FileReader / FileWriter 문자 단위 입출력을 위한 하위 스트림 클래스
InputStreamReader / OutputStreamWriter
PrinterWriter
BufferedReader / BufferedWriter

 * 바이트 단위 입출력 스트림 

   : 그림, 멀티미디어, 문자등 모든 종류의 데이터들을 주고 받을 수 있다.

 * 문자 단위 입출력 스트림

   : 오로지 문자만 주고받을 수 있게 특화되어 있다.

 

InputStream

 : 바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스이다.

   모든 바이트 기반 입력 스트림은 이 클래스를 상속받아서 만들어짐.

   InputStream 클래스에는 바이트 기반 입력 스트림이 기본적으로 가져야 할 메소드들이 정의 되어 있음.

메소드 설명
int available() 현재 읽을 수 있는 바이트 수를 반환한다
void close() 현재 열려있는 InputStream을 닫는다
void mark(int readlimit) InputStream에서 현재의 위치를 표시해준다
boolean markSupported() 해당 InputStream에서 mark()로 지정된 지점이 있는지에 대한 여부를 확인한다
abstract int read() InputStream에서 한 바이트를 읽어서 int값으로 반환한다
int read(byte[] b) byte[] b 만큼의 데이터를 읽어서 b에 저장하고 읽은 바이트 수를 반환한다
int read(byte[] b, int off, int len) len만큼 읽어서 byte[] b의 off위치에 저장하고 읽은 바이트 수를 반환한다
void reset() mark()를 마지막으로 호출한 위치로 이동
long skip(long n) InputStream에서 n바이트만큼 데이터를 스킵하고 바이트 수를 반환한다

 

OutputStream

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

   모든 바이트 기반 출력 스트림 클래스는 이 클래스를 상속받아서 만들어짐.

   OutputStream 클래스에는 모든 바이트 기반 출력 스트림이 기본적으로 가져야할 메소드가 정의되어 있음.

메소드 설명
void close() OutputStream을 닫는다
void flush() 버퍼에 남아있는 출력 스트림을 출력한다
void write(byte[] b) 버퍼의 내용을 출력한다
void write(byte[] b, int off, int len) b배열 안에 있는 시작 off부터 len만큼 출력한다
abstract void write(int b) 정수 b의 하위 1바이트를 출력한다

 

반응형

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

[JAVA] String, StringBuffer, StringBuilder  (0) 2021.07.06
[JAVA] 래퍼 클래스 - Wrapper Class  (0) 2021.07.06
[JAVA] 문자열 비교 - ==, equals() 차이점  (0) 2021.07.06
[Java] Socket Programming - UDP  (0) 2019.04.30
[Java] UUID 사용법  (0) 2019.01.16