출처: http://november11tech.tistory.com/88 [Mr.november11] 입출력(I/O) :: 사월은 봄이다.

입출력(I/O) 

 

바이트 기반 스트림 

 

어느 한쪽에서 다른 한쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데

이것을 스트림이라고 한다.

스트림은 "단방향 통신"만 가능하기 때문에 하나의 스트림으로 입출력을 동시해 처리할 수 없다. 스트림은 "큐"와 같은 FIFO 구조로 되어 있다고 생각 하면 쉽다.

 

 

스트림은 바이트단위로 데이터를 전송하며 입출력 대상에 따라 입출력 스트림이 있다.

 입력스트림

 출력 스트림 

 입출력 대상

 FileInputStream 

 FileOutputStream 

  파일

 ByteArrayInputStream

 ByteArrayOutputStream

  메모리(byte 배열)

 PipedInputStream

 PipedOutputStream

  프로세스(프로세스 간 통신)

 AudioInputStream

 AudioOutputStream

  오디오장치

 

보조 스트림

스트림의 기능을 보완하기 위한 보조스트림이다. 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력 할 수 있는 기능은 없으나, 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다.






코드로 보면 보조스트림이 입력기능을 수행하는 것처럼 보이지만 실제 입력은 보조스트림과 연결된 FileInputStream 이 입력을 수행하고 보조 스트림은 버퍼만 제공한다.

 

 

보조스트림의 종류

 입력

출력 

 설명

 FilterInputStream

 FilterOutputStream

 필터를 이용한 입출력

 BufferedInputStream

 BufferedOutputStream

 버퍼를 이용한 입출력 성능 향상

 DataInputStream

 DataOutputStream

 int, float 와 같은 기능형 단위로 데이터를 처리

 SequenceInputStream

 SequenceOutputStream

 두 개의 스트림을 하나로 연결

 LineNumberInputStream

 -

 읽어 온 데이터 라인 번호를 카운트

 ObjectInputStream

 ObjectOutputStream

 데이터를 객체 단위로 읽고 쓰는데 사용.

주로 파일을 이용해 객체 직렬화와 관계 있음

 -

 PrintStream

 버퍼를 이용하며, 추가적인 print 기능

 PushbackInputStream

 -

 버퍼를 이용해 읽어 온 데이터를 다시 되돌림

 

 

문자기반 스트림

 

바이트 기반은 입출력의 단위가 1바이트다. java 에서는 char 형이 2 바이트이기 때문에 바이트 기반 스트림으로 2바이트인 문자를 처리하는데 어려움이 있다.

이 점을 보완하기 위해  문자기반 스트림이 제공된다. 문자데이터를 입출력 할 때는 바이트기반 대신 문자 기반 스트림을 사용하면 된다.

 








 바이트기반 스트림

 문자기반 스트림

 FileInputStream

 FileOutputStream

 FileReader

 FileWriter

 ByteArrayInputStream

  ByteArrayOutputStream

 CharArrayReader

  CahrArrayWriter

 PipedInputStream

PipedOutputStream

 PipedReader

PipedWriter

 StringBufferInputStream

StringBufferOutputStream

 StringReader

StringWriter

 

 

 

'개발 > JAVA' 카테고리의 다른 글

replaceall 특정문자를 제거해 준다.  (0) 2018.02.10
배열을 리스트로 넣기  (0) 2018.02.10
StringBuffer 클래스  (0) 2018.02.10
String 클래스  (0) 2018.02.10
객체지향 프로그래밍  (0) 2018.02.10

+ Recent posts