-
Notifications
You must be signed in to change notification settings - Fork 5
Open
Description
데이터 타입에 따른 스트림의 분류
입출력 스트림
- 바이트 스트림 : 입력 바이트 스트림(InputStream), 출력 바이트 스트림(OutputStream)
- 문자 스트림 : 입력 문자 스트림(Reader), 출력 문자 스트림(Writer)
스트림의 종류
- 데이터 타입 : 바이트, 문자
- 데이터 방향 : 입력, 출력
- 노드의 종류 : 표준 입출력, 파일
- 스트림의 성격: 노드 스트림/ 보조 스트림
바이트 스트림(Byte Stream)
- 바이트 단위로 데이터를 입력받거나 출력하기 위한 스트림 클래스
- 주로 이진파일(이미지,오디오,비디오..)를 읽고 쓰는데 사용
- 최상위 추상 클래스 : InputStream, OutputStream
- 노드의 종류에 따라 다양한 구체적인 서브 클래스 사용
InputStream 클래스
- 모든 바이트 입력 스트림의 최상위 추상클래스
- 바이트 단위로 데이터를 읽기 위한 여러 메서드를 제공
// 입력 스트림으로부터 한 바이트의 데이터를 읽음
int read() throws IOException
// 입력 스트림으로부터 데이터를 읽어서 주어진 바이트 배열 b를 채움
int read(byte[] b) throws IOException
// 입력 스트림으로부터 주어진 바이트 배열b의 특정 오프셋off부터 최대 len 길이만큼 바이트를 읽음
int read(byte[] b, int off, int len) throws IOException
// 입력 스트림을 닫고 모든 시스템 자원을 해제
void close() throws IOExceptionOutputStream 클래스
- 모든 바이트 출력 스트림의 최상위 추상 클래스
- 바이트 단위로 데이터를 출력하기 위한 여러 메서드 제공
void write(int b) throws IOException
void write(byte[] b) throws IOException
void write(byte[] b, int off, int len) throws IOException
public void flush()
public void close()보조 스트림
- 스트림의 종류 : 노드 스트림, 보조 스트림
- 노드 스트림(Node Stream)
- 실제 노드에 연결
- 데이터의 실제 입출력을 담당
- 보조 스트림(Filter Stream)
- 실제 노드에 연결되지 않음
- 다른 스트림을 감싸서 추가적인 기능 (버퍼링, 데이터 형식 변환, 객체 직렬화)
- 여러 보조 스트림을 체인 형태로 연결하여 다양한 기능을 조합할 수 있음
- 노드 스트림 없이 단독으로 사용할 수 없음
- 보조 스트림의 close()를 호출하면 노드 스트림의 close() 도 호출됨
- 코테 TIP
- 입력값이 1만줄 이상 : BufferedReader
- 입력값 천줄 단위 : Scanner 써도 무방
객체 직렬화(Serialization) 가능 클래스 만들기
- 객체가 ObjectOutputStream에 의해 직렬화되기 위해서는 해당 객체 클래스가 반드시 Serialization 인터페이스를 구현해야 함
Metadata
Metadata
Assignees
Labels
No labels