I/O Stream 스트림

반응형
728x90
반응형

I/O 스트림

- 바이트 단위로 데이터를 전송한다.

- 실제의 입력과 출력이 표현된 데이터의 흐름이다.

- 운영체제에 의해 생성되는 가상의 연결고리 역할을 수행한다.

- 출력과 입력의 중간매개체 역할을 한다.

- 스트림을 한 방향으로만 통신이 가능하여 입력과 출력을 동시에 실행할 수 없다.

- 사용목적에 따라 입력스트림, 출력스트림을 구분한다.

 

  • (1) 입출력 스트림 
  입력: InputStream    read()    return : int -> 더이상 읽어들일 바이트가 없으면 -1을 반환한다.
  출력: OutputSTream   write()    return: void 

 

  • (2) 바이트 기반 스트림
  파일    입력: FileInputStream    출력: FileOutputStream 
  메모리   입력: ByteArrayInputStream     출력: ByteArrayOutputStream 
  프로세스   입력: pipedInputStream    출력: pipedInputStream 
  오디오 장치   입력: AutoInputStream    출력: AudioOutputStream 

 

  • (3) 보조스트림

- 실제로 데이터를 주고받을수는 없다.

- 다른 스트림의 기능을 향상시키거나 새로운 기능을 추가해준다.

 

  필터    입력: FilterInputStream    출력: FilterOutputStream 
  버퍼   입력: BuffersInputStream    출력: BufferedOutputStream
  Java 기본타입   입력: DataInputInputStream    출력: DataInputOutputStream
  객체 역직렬화   입력: ObjectInputStream    출력: ObjectOutputStream

 

  • (4) 문자기반 스트림

- JAVA에서 char 형이 2byte인데, 1byte씩 전송되는 바이트 기반 스트림으로는 처리하기 어렵기 때문에 사용한다.

 

  파일    입력: FileReader    출력: FileWriter 
  메모리    입력: CharArrayReader    출력: CharArrayWriter 
  프로세스    입력: PipedReader    출력: PipedWriter 
  문자열    입력: StringReader    출력: StringWriter 

 

 

  • (5) 보조 문자기반 스트림
  필터    입력: FilterReader    출력: FilterWriter 
  버퍼   입력: BufferedReader    출력: BufferedWriter 

 

 

참고사항

스트림을 닫으려면 close() 메소드를 사용하는데, 보통 flush(); close() 이렇게 코드를 작성한다.

flush()란? 버퍼에 남아있는 데이터를 전송하고 버퍼를 비운다.

 

하지만, close() 메소드만 선언해도 flush()를 자동으로 해주기 때문에 close() 메소드만 작성해도 된다.

 

 

반응형

'Coding > Java' 카테고리의 다른 글

전역변수 vs 멤버변수  (0) 2018.10.28
new 연산자를 사용하여 인스턴스 생성  (1) 2018.10.28
Arraylist -> 배열로 변경하기  (0) 2018.10.27
콤마(,)로 구분된 String을 배열로 변환하기  (0) 2018.10.27
삼항연산자  (0) 2018.10.27

Designed by JB FACTORY