스트림(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 |