어읽로꾸거
[네트워크 프로그래밍] 2. Stream - InputStream 본문
InputStream
InputStream - abstract class
- read : 소스로부터 읽는 함수
- skip : 소스에서 포인터를 넘기는 함수
- available : 소스에서 읽을 수 있는 바이트의 수를 가져오는 함수
Polymorphism
readSomething(InputStream) => 어떤 인풋 스트림이든 가능
readSomething(FileInputStream) => 파일 인풋 스트림만 가능
read()
read는 0-255중 하나의 바이트를 int로서 리턴함 (자신이 읽은걸 반환함)
다 읽으면(EOF, EOS) -1 가져옴
블로킹 메소드 => 읽을때까지 기다림
abstract로 구현되어있어 서브클래스에서 구현되어야함
(1번 1개의 바이트를 읽는 것은 인접한 256 혹은 512바이트를 읽는 것과 같음)
read(byte[] input)
2개의 메소드
read(byte[] input)
read(byte[] input, int off, int len) throws IOException => input의 [off ... off + len - 1]까지
- read(byte[] input)
input의 길이만큼 읽으려고 하고, 끝까지 읽으려고 함
다읽으면 -1
읽은 바이트의 길이를 반환함
available()
얼마나 많은 바이트를 읽을 수 있는지 그 수를 반환함
skip(long n)
n 바이트만큼 스트림으로 부터 넘어감
실제 스킵한 만큼의 길이를 반환함
Filter Classes
- 인풋/아웃풋 스트림은 꽤 날것 클래스이다(raw classes) => 잊기 쉬운 값들
- HTTP header : 7bit ASCII
- FTP: ZIP format
- 자바는 Filter Class를 제공하여 raw stream에게 붙일 수 있도록 함, 바이트를 다른 포맷들로 바꾸기 위해서
=> 3개의 필터 클래스 : byte streams, readers and writers(여러 인코딩(utf8, ecukr)의 글자를 다룸 => 2byte stream)
File Stream
- file input stream / file output stream
파일을 읽거나 파일을 쓰는 스트림
'정리' 카테고리의 다른 글
[컴퓨터회로] 2. 불 대수 (0) | 2022.09.14 |
---|---|
[CSS] z-index 가 작동하지 않을 때 (0) | 2022.09.13 |
[네트워크 프로그래밍] 1. Stream - OutputStream (0) | 2022.09.07 |
[수학] 2의 보수, 1의 보수 (+ 왜 필요한지 이유) (0) | 2022.09.04 |
[Python] Fast Api 에서 Eureka 연결하기 (0) | 2022.08.27 |