프로그래밍 정리/자바

스트림의 종류

주누다 2013. 6. 18. 11:24
반응형

- 스트림은 데이터의 입출력을 도와주는 중간자 역할.

데이터의 목표지점이 네트워크의 어느 장소이든, 메모리이든 상관하지 않음. 다만 해당 데이터를 스트림으로 보내고 그리고 스트림에 존재하는 데이터를 읽어들이거나 기록해 버리면 끝.

 목표지점이 어디라도 상관없으며 복잡한 작업은 스트림이 알아서 해결해 준다는 의미.


- 스트림의 가장 기본적인 분류는 입력과 출력 스트림으로 나눌 수 있음.


- 스트림의 기본적인 분류

-> 입력 스트림(예 : FileInputStream, ObjectInputStream)

-> 출력 스트림(예 : FileOutputStream, ObjectOutputStream)


- 문자 스트림 : 문자 스트림은 최상위의 Reader와 Writer로 이루어져 있음.


Reader   - BufferReader - LineNumberReader

- CharArrayReader

- InputStreamReader - FileReader

- FilterReader - PushbackReader

- PipedReader

- StringReader



Witer     - BufferedWriter

- CharArrayWriter

- OutputStreamReader - FileWriter

- FilterWriter

- PipedWriter

- StringWriter





- 그 규칙은 Reader. 즉, 입력용 문자 스트림은 'Reader'라는 단어가 붙어있음. 반대로 출력용문자 스트림에는 'Writer'라는 단어가 붙어있음.


- 문자 스트림의 패턴

-> Reader는 입력용 문자 스트림

-> Writer는 출력용 문자 스트림

-> Reader나 Writer가 붙는다면 문자 스트림


- 문자 스트림의 구분을 쉽게 하기 위해 Reader와 Writer를 붙여둔 것. 문자 관련 스트림은 무조건 Reader와 Writer를 상속.


============================================================================================================


- 바이트 스트림의 구성도


InputStream   - FileInputStream

- PipedInputStream

- FilterInputStream - LineNumberInputStream

- DataInputStream

- BufferedInputStream

- PushbackInputStream

- ByteArrayInputStream

- SequenceInputStream

- StringBufferInputStream

- ObjectInputStream


OutputStream        - FileOutputStream

- PipedOutputStream

- FilterOutputStream    - DataOutputStream

- BufferedOutputStream

- PrintStream

- ByteArrayOutputStream

- ObjectOutputStream





- 바이트 스트림 또한 입력과 출력의 차이를 InputStream과 OutputStream으로 나우어 볼 수 있음.

문자 스트림에서와 같이 InputStream에는 대부분 'InputStream'이라는 꼬리말이, OutputStream에는 'OutputStream'이라는 꼬리말이 붙어 있음. 물론 아닌 놈도 몇 있지만 일단은 대부분 이 형식을 따르고 있어, 'InputStream'과 'OutputStream'이라는 단어가 붙어 있으면 바이트 스트림으로 보아도 됨.


- 바이트 스트림의 패턴

-> InputStream는 입력용 바이트 스트림.

-> OutputStream는 출력용 바이트 스트림.

-> 'InputStream'나 'OutputStream'이라는 단어가 붙어 있다면 바이트 스트림.

-> PrintStream은 출력용만 존재하기 때문에 약간 특이.


- 스트림의 종류는 아주 많음. 이러한 스트림을 전부 사용할 줄 안다면 다행이지만 이것을 모두 습득하기에는 역부족. 종류가 너무 많음. 규칙을 찾는게 좋음.


- 스트림의 종류1

-> 문자 스트림 : Reader, Writer(문자 단위로 처리)

-> 바이트 스트림 : InputStream, OutputStream(바이트 단위로 처리)

-> 스트림에서 나타나는 규칙은아주 단순. InputStream과 Reader 계열일 경우에는 읽어들이는 메서드를 포함하고 있음.

그리고 OutputStream과 Writer계열일 경우에는 기록하는 메서드를 포함하고 있음. InputStream과 OutputStrea일 경우에는 바이트를, Reader와 Writer의 경우에는 문자를 다루는 메서드를 포함하고 있을 것임.


- 스트림의 종류2

-> 입력 스트림 : Reader나 InputStream

-> 출력 스트림 : Writer나 OutputStream


- 스트림의 규칙

-> InputStream과 Reader는 읽어들이는 메서드를 포함하고 있어야함.

-> OutputStream과 Writer는 기록하는 메서드를 포함하고 있어야함.


- 입력 계열의 스트림은 대부분 read()라는 메서드를 포함하고 있음. 읽어들인다는 의미.

-> 바이트 단위의 read() 메서드

=> int read()

=> int read(byte cbuf[])

=> int read(byte cbuf[], int offset, int length)


-> 문자 단위의 read() 메서드

=> int read()

=> int read(char cbuf[])

=> int read(char cbuf[], int offset, int length)


- 출력 계열의 스트림은 대부분 write()라는 메서드를 포함고 있음. 기록한다는 의미.

-> 바이트 단위의 write() 메서드

=> int write(int c)

=> int write(byte cbuf[])

=> int write(byte cbuf[], int offset, int length)


-> 문자 단위의 write() 메서드

=> int write(int c)

=> int write(char cbuf[])

=> int write(char cbuf[], int offset, int length)






반응형

'프로그래밍 정리 > 자바' 카테고리의 다른 글

표준 출력  (0) 2013.06.18
문자 스트림과 바이트 스트림  (0) 2013.06.18
스트림의 원리  (0) 2013.06.18
스트림(Stream)이란?  (0) 2013.06.17
Java Stream(자바 스트림)  (0) 2013.06.17