프로그램기준을으로 

데이터가 들어오면 입력스트림(InputStream)

데이터가 나가면 출력스트림(OuputSrtream)

특징

  • 스트림은 동기로 동작한다.
  • Byte 단위 입출력 스트림 : 그림, 멀티미디어, 문자등 모든 종류의 데이터들을 주고받을 수 있습니다.(바이트형태로 쓰기 읽기)
  • 문자 단위 입출력 스트림 : 오로지 문자만 주고받을 수 있게 특화되어 있습니다.(인코딩되어 쓰기 읽기가능)

자바 패키지(java.io)

  • java.io.File : 파일 시스템의 파일/폴더 정보를 얻기 위한 클래스
  • java.io.Console : 콘솔로 부터 문자를 입출력하기 위한 클래스

   Byte단위 입출력 스트림

  • java.io.InputStream / OuputStream : Byte 단위 입출력을 위한 최상위 입출력 스트림 클래스
  • java.io.FileInputStream / FileOuputStream : Byte 단위 입출력을 위한 하위 스트림 클래스
  • java.io.DataInputStream / DataOutputStream : Byte 단위 입출력을 위한 하위 스트림 클래스
  • java.io.ObjectInputStream / ObjectOutputStream : Byte 단위 입출력을 위한 하위 스트림 클래스
  • java.io.BufferedInputStream / BufferedOutputStream : Byte 단위 입출력을 위한 하위 스트림 클래스
  • java.io.PrintStream : Byte 단위 입출력을 위한 하위 스트림 클래스

   문자단위 입출력 스트림

  • java.io.Reader / Writer : 문자 단위 입출력을 위한 최상위 입출력 스트림 클래스
  • java.io.FileReader / FileWriter : 문자 단위 입출력을 위한 하위 스트림 클래스
  • java.io.InputStreamReader / OutputStreamWriter : 문자 단위 입출력을 위한 하위 스트림 클래스
  • java.io.PrintWriter : 문자 단위 입출력을 위한 하위 스트림 클래스
  • java.io.BufferedReader / BufferedWriter : 문자 단위 입출력을 위한 하위 스트림 클래스

 

java.io.InputStream  : 하위 입력 스트림 클래스의 추상클래스

Method

  • read() : 입력 스트림으로부터 1바이트를 읽고 읽은 바이트를 리턴합니다
  • read(byte[ ] b) : 입력 스트림으로부터 읽은 바이트들을 매개값으로 주어진 바이트 배열b에 저장하고 실제로 읽은 바이트 수를 리턴합니다.
  • read(byte[] b, int off, int len) : 입력 스트림으로부터 len개의 바이트만큼 읽고 매개값으로 주어진 바이트 배열 b[off]부터 len개까지 저장합니다. 그리고 실제로 읽은 바이트 수인 len개를 리턴합니다. 만약 len개를 모두 읽지 못하면 실제로 읽은 바이트 수를 리턴합니다. 
  • close() : 사용한 시스템 자원을 반납하고 입력스트림을 닫습니다.

 

java.io.OutputStream : 하위 출력 스트림 클래스의 추상클래스

Method

  • write(int b) : 출력 스트림으로부터 1바이트를 보냅니다.(b의 끝 1바이트) 
  • write(byte[ ] b) : 출력 스트림으로부터 주어진 바이트 배열 b의 모든 바이트를 보냅니다.
  • write(byte[ ] b, int off, int len) : 출력 스트림으로 주어진 바이트 배열 b[off]부터 len개까지의 바이트를 보냅니다.
  • flush()  : 버퍼에 잔류하는 모든 바이트를 출력합니다. 
  • close() : 사용한 시스템 자원을 반납하고 출력 스트림을 닫습니다.

 

java.io.DataInputStream / DataOutputStream

  • 데이터 입출력.

 

java.io.FileInputStream / FileOutputStream

  • 파일 입출력
  • 일반적으로 DataInputStream / DataOutputStream과 같이 사용한다.

 

추가정보

  • flush()는 버퍼가 아직 가득 차지 않은 상황에서 강제로 버퍼의 내용을 전송함으로써 데드락(deadlock) 상태를 해제한다.
  • 바이트 스트림은 1바이트를 입출력하기 때문에 일반적으로 영문자로 구성된 파일,  동영상 파일, 음악 파일의 입출력 등에 적합한 스트림입니다.
  • 문자 스트림은 2바이트를 입출력하기 때문에 세계 모든 나라의 언어로 구성된 파일을 입출력할 수 있습니다. 문자 데이터만 입·출력 가능합니다.

 

예제

 

'language > java' 카테고리의 다른 글

Static 변수 / 메서드  (0) 2019.11.28
HttpURLConnection vs HttpsURLConnection  (0) 2019.11.27
파일 스트림  (0) 2019.11.13
java EE  (0) 2019.11.08
EJB  (0) 2019.11.08

+ Recent posts