Java

[Java의 정석] 15-1. 입출력: 바이트 기반 스트림

noahkim_ 2023. 11. 29. 01:38

"Java의 정석" 책을 정리한 포스팅 입니다.

1. 자바에서의 입출력

입출력이란?

  • 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 말합니다.

 

스트림

  • 자바에서 입출력을 수행할 때, 두 대상을 연결하고 데이터를 전송할 수 있는 객체를 말합니다.
  • 데이터를 운반하는데 사용되는 연결통로 역할을 합니다.

 

특징
  • 단방향 통신만 가능합니다.
    • 입력과 출력을 동시에 처리할 수 없습니다.
    • 각각 입력스트림과 출력스트림이 필요합니다.
  • FIFO 구조
    • 먼저 보낸 데이터를 먼저 받습니다.

 

2. 바이트기반 스트림

  • 바이트 단위로 데이터를 전송합니다.
    • 출력의 단위가 모두 1byte 입니다.
  • 입출력 대상에 따라 구현체가 제공됩니다.
    • ByteArray : 메모리(byte)
    • File : 파일
    • Piped : 프로세스
    • Audio : 오디오 장치

 

InputStream 추상클래스

read()
  • 데이터를 읽어옵니다.

 

구현체
  • ByteArrayInputStream : 다른 곳에 입력하기 전에 데이터를 임시로 담아 변환하는 작업에 사용됩니다.
  • FileInputStream : 파일에 입력하기 위해 사용됩니다.
  • PipedInputStream
  • AudioInputStream

 

OutputStream 추상클래스

flush()
  • 스트림의 버퍼에 있는 모든 내용을 출력소스에 씁니다.

 

write()
  • 주어진 값을 출력소스에 씁니다.

 

구현체
  • FileOutputStream
  • ByteArrayOutputStream
  • PipedOutputStream
  • AudioOutputStream