JAVA Programming

[80] I/O 입출력 스트림 정의

꾸준히개발하자 2020. 7. 21. 11:05

자바 입출력 스트림

장치하고는 상관없이  자바의 입출력을 추상화 해놓은 스트림이다.

입출력 스트림 이란 ?

 네트웍에서 자료의 흐름이 물과 같다는 의미에서 유래

다양한 입출력 장치에 독립적으로 일관성 있는 입출력 방식을 제공한다.

 

입출력이 구현되는 곳에서는 모두 I/O 스트림을 사용한다

: 키보드 , 파일 디스크 , 메모리 등이 있다.

장치에 무엇이냐 따라서 해당하는 기능이 여러가지고 구현될수있는데 그것들을 추상화 한다

(이미지)

 

입출력 스트림 구분

I/O 대상 기준 : 입력 스트림 , 출력 스트림

자바의 종류 : 바이트 스트림 , 문자 스트림

스트림의 기능 : 기반 스트림(기본인가) , 보조 스트림(기능보조)

문자 스트림이나 바이트 스트림이나

기반스트림은 읽거나 쓰고

보조스트림은 기반스트림을 서포터해주는 기능을 추가 (ex 버퍼링기능 , 직렬화)

하나의 스트림은 입력이나 출력이나 기반이나 보조인가 구분하는데 도움이 된다.

스트림의예

뒤에 Stream 은 바이트 단위 , reader  writer 문자를 읽고씀

BufferedInputStream 버퍼링 기능을 바이트단위로 읽어주는 보조 스트림

BufferedReader 버퍼링 기능을 문자단위로 보조 스트림

FileInputStream 을 보면 아 파일을 읽어들이고 바이트단위로 읽는구나 라고 알게됨

스트림의 예)

바이트 단위 스트림과 문자 단위 스트림

바이트 단위 스트림 : 바이트 단위로 자료를 읽고 쓴다.(동영상,음악파일)

문자 단위 스트림 : 문자는 2바이트씩 처리 해야 한다.

스트림의예)

문자를 보면 FileReader FileWriter  문자 앞에 보면 어떤 목적지가 있으면 보조 스트림

Buffered를 보면 버퍼 보조스트림

 

 

기반스트림과 보조 스트림

기반스트림 : 대상에 직접 자료를 읽고 쓰는 기능의 스트림

보조스트림 : 직접 읽고 쓰는 기능은 없고 추가적인 기능을 제공해 주는 스트림

기반 스트림이나 또 다른 보조 스트림을 생성자의 매개변수로 포함한다.

 

데코레이터 패턴 기반

기반스트림 + 보조스트림A + 보조스트림B

상속보다 더 유연하게 기능을 확장할 수 있는 디자인 패턴이다.