- 자바에서 입력과 출력은 stream을 통해서 이루어집니다.
- 일반적으로 IO라고 하면 파일IO만을 생각할 수 있는데, 어떤 디바이스를 통해 이뤄지는 작업을 모두 IO라고 합니다.
- 네트워크를 통해서 다른 서버로 데이터를 전송하거나,
- 다른 서버로부터 데이터를 전송 받는 것도 IO에 포함됩니다.
- 간단하게 콘솔에 출력하는 것도 stream을 통해서 출력하는 것입니다.
- 스트림을 쓰는 데 관련된 클래스는 Input을 Output으로 바꾸면 됩니다.
- 여기에 명시된 모든 입력과 관련된 스트림들을 java.io.InputStream 클래스로부터 상속받았습니다.
- 바이트 기반의 스트림 입력을 처리하기 위해서는 이 클래스의 하위 클래스를 사용합니다.
| 이름 | 내용 |
|---|---|
| ByteArrayInputStream | 바이트로 구성된 배열을 읽어서 입력 스트림을 만듭니다. |
| FileInputStream | 이미지와 같은 바이너리 기반의 파일의 스트림을 만듭니다. |
| FilterInputStream | 여러 종류의 유용한 입력 스트림의 추상 클래스입니다. |
| ObjectInputStream | ObjectOutputStream을 통해서 저장해 놓은 객체를 읽기 위한 스트림을 만듭니다. |
| PipedInputStream | PipedOutputStream을 통해서 출력된 스트림을 읽어 처리하기 위한 스트림을 만듭니다. |
| SequenceInputStream | 별개인 두 개의 스트림을 하나의 스트림으로 만듭니다. |
- 문자열 기반의 스트림을 읽기 위해서 사용하는 클래스는 java.io.Reader 클래스의 하위 클래스들입니다.
| 이름 | 내용 |
|---|---|
| BufferedReader | 문자열 입력 스트림을 버퍼에 담아서 처리합니다. 일반적으로 문자열 기반의 파일을 읽을 때 가장 많이 사용됩니다. |
| CharArrayReader | char의 배열로 된 문자 배열을 처리합니다. |
| FilterReader | 문자열 기반의 스트림을 처리하기 위한 추상 클래스입니다. |
| FileReader | 문자열 기반의 파일을 읽기 위한 클래스입니다. |
| InputStreamReader | 바이트 기반의 스트림을 문자열 기반의 스트림으로 연결하는 역할을 수행합니다. |
| PipedReader | 파이프 스트림을 읽습니다. |
| StringReader | 문자열 기반의 소스를 읽습니다. |
- 바이트 단위로 읽거나, 문자열 단위로 읽을 때 중요한 것은 한 번 open한 스트림은 반드시 닫아야 한다는 것이다.
- 스트림을 닫지 않으면 나중에 리소스가 부족해질 수 있다.