본문 바로가기

JAVA 공책/=> 다시 정리

Stream 총정리

스트림(Stream)

JVM 외부에 있는 파일이나 네트워크와의 데이터 송수신 통로.

이 통로는 단방향성이기 때문에 읽는 스트림과 쓰는 스트림이 따로 존재.

데이터 전송 방식에 따라 분류한다.

싱크 스트림 / 프로세싱 스트림 으로 분류하기도 한다.

싱크 스트림 : 데이터 근원지에서 직접 읽거나 목적지에서 직접 기록하는 클래스

싱크 스트림은 보통 파일을 읽고 쓰는 작업을 지칭하지 않고,

통신을 할 때 서로 싱크를 맞춰야 하는 그런 경우를 싱크라고 지칭한다.

프로세싱 스트림 : 다른 스트림을 이용해, 중간에서 어떤 작업을 하는 클래스


데이터

전송 방식

바이트 단위(바이너리, 숫자)

Byte Stream : 이미지, 동영상 파일 등

 텍스트 단위(문자)

Character Stream : text (html 등)

최상위

추상 클래스

 InputStream(읽다)

OutputStream(쓰다)

Reader(읽다)

Writer(쓰다)

클래스

FileInputStream 

FileOutputStream 

InputStreamReader

- FileReader

OutputStreamWriter

- FileWriter

 PipedInputStream

PipedOutputStream 

PipedReader 

PipedWriter 

ByteArrayInputStream

ByteArrayOutputStream

CharArrayReader

CharArrayWriter

StringBufferInputStream

 

StringReader

StringWriter

SequenceInputStream

 

 

 PrintWriter 

ObjectInputStream

ObjectOutputStream

  BufferedReader

- LineNumberReader

BufferedWriter

 FilterInputStream

- LineNumberInputStream

- DataInputStream

- BufferedInputStream

- PushbackInputStream

FilterOutputStream

- DataOutputStream

- BufferedOutputStream

- PrintStream

FilterReader

- PushbackReader

FilterWriter



보조스트림 / 주스트림

싱크스트림과 프로세싱 스트림과는 조금 다른 개념이다.

보조스트림 : 자기 혼자는 쓸 수 없는(입출력) 스트림을 말한다.

즉, 괄호 안에 다른 스트림을 넣어야만 사용할 수 있다.

하지만 보조스트림은 주스트림을 도와서 효율을 늘리거나 편리한 기능을 제공한다.


데이터

전송 방식

바이트 단위(바이너리, 숫자)

Byte Stream : 이미지, 동영상 파일 등

 텍스트 단위(문자)

Character Stream : text (html 등)

최상위

추상 클래스

 InputStream(읽다)

OutputStream(쓰다)

Reader(읽다)

Writer(쓰다)

클래스

FileInputStream 

FileOutputStream 

InputStreamReader

- FileReader

OutputStreamWriter

- FileWriter

 PipedInputStream

PipedOutputStream 

PipedReader 

PipedWriter 

ByteArrayInputStream

ByteArrayOutputStream

CharArrayReader

CharArrayWriter

StringBufferInputStream

 

StringReader

StringWriter

SequenceInputStream

 

 

 PrintWriter 

ObjectInputStream

ObjectOutputStream

  BufferedReader

- LineNumberReader

BufferedWriter

 FilterInputStream

- LineNumberInputStream

- DataInputStream

- BufferedInputStream

- PushbackInputStream

FilterOutputStream

- DataOutputStream

- BufferedOutputStream

- PrintStream

FilterReader

- PushbackReader

FilterWriter


주스트림 : 괄호 안에 들어가는 스트림을 말한다.

바이트 스트림

바이트 단위로 입출력하는 스트림

InputStream & OutputStream 라는 추상클래스에 공통 사용 메소드 존재.


InputStream

OutputStream

바이트 단위로 데이터를 읽기

이트 단위로 데이터를 출력 

메소드

메소드

void close()

스트림 닫기

void close()

스트림 닫기 

int available()

읽을 수 있는 바이트 크기를 리턴

void write(int b)

b를 출력

int read()

1바이트의 데이터를 읽어서 정수로 리턴 (음수이면 데이터가 없음을 뜻함)

void write(byte[]b, int offset, int length)

b배열의 offset부터 length만큼을 기록 

int read(byte[]b)

b배열의 크기만큼 읽어서 b에 저장하고 읽은 바이트 수를 리턴

리턴 값 0 이면 읽은 데이터가 없음을 뜻함

 void flush()

버퍼에 저장된 내용을 기록
버퍼는 데이터를 일정량만큼 모아서 전달 하는데 마지막엔 그 일정량을 못채우고 남는 찌꺼기가 존재할 수 있으므로 사용 

int read(byte[]b, int offset, int length)

b배열에 offset부터 length만큼 일어서 저장하고 읽은 개수를 리턴

  

long skip(long n)

n 바이트만큼 스킵

자주 쓰진 않지만 코드의 맨위(제목)나 맨 아래(보충내용)을 스킵하는 경우에 씀 

  


캐릭터 스트림

문자 단위로 입출력하는 스트림

Reader & Writer 라는 추상클래스에 공통 사용 메소드 존재.

'JAVA 공책 > => 다시 정리' 카테고리의 다른 글

Parameter  (0) 2018.08.24
Exception Handling(예외처리)  (0) 2018.08.23
인터페이스  (0) 2018.08.22
Trigger  (0) 2018.07.31
Oracle의 프로그래밍 PL/SQL & Procedure  (0) 2018.07.31