3-2공부/네트워크프로그래밍

[Java] InputStream

KGW2027 2022. 10. 22. 01:45
728x90
반응형

java.io.InputStream

implements Closeable (스트림을 닫을 수 있다)


InputStream은 스트림을 불러들이기 위한 스트림들의 슈퍼클래스이다.

 

- 추상 함수 ( Abstract Method )

read() : 스트림에서의 다음 바이트를 읽는다.

 

- 지역 함수 ( Local Method )

available() : 읽을 수 있는 남은 바이트 수

close() : 스트림 종료

mark() : 스트림 내에서 읽을 수 있는 한계 바이트 위치를 정한다.

read(byteArray, offset, length) : byteArray에 데이터를 read한다.

reset() : stream를 읽고 있는 위치를 mark()가 선언된 곳으로 돌아간다.

skip(n) : n byte를 넘긴다.

 


 

java.io.FileInputStream

extends InputStream


파일을 Stream을 통해 읽기 위한 클래스이다.

 

- 생성자 ( Constructor )

new FileInputStream(File file) : 파일 객체를 이용해 객체를 생성한다.

new FileInputStream(String name) : 파일 이름을 이용해 객체를 생성한다.

 


 

java.io.ByteArrayInputStream

extends InputStream


ByteArray를 Stream으로 바꿔서 처리하기 위한 클래스이다.

 

- 생성자 ( Constructor )

new ByteArrayInputStream(byte[] buf) : ByteArray를 이용해 객체를 생성한다.

 


 

java.io.BufferedInputStream

extends FilterInputStream ( binary에 data type을 줘서 처리하기 위한 스트림 )


BufferedInputStream은 스트림 입력 과정에 버퍼를 사용하여 속도를 향상시킨 클래스이다.

 

- 생성자 ( Constructor )

new BufferedInputStream(InputStream is) : 입력스트림을 이용해 객체를 생성한다.

// 주로 FileInputStream이나 System.in 등을 사용한다.

 


 

java.io.DataInputStream

extends FilterInputStream

implements DataInput ( 다음 바이트가 인코딩 내에서 어떤 형태인지 구성한다. )


DataInputStream은 입력받은 스트림을 Java dataType에 맞게 변형하기 위한 클래스이다.

 

- 생성자 ( Constructor )

new DataInputStream(InputStream is) : 입력스트림을 이용해 객체를생성한다.

 

- 지역 함수 ( Local Method )

readBoolean() : 다음 바이트를 bool로 읽는다.

readByte() : 다음 바이트를 byte로 읽는다.

readDouble() : 다음 2바이트를 double로 읽는다.

....

 


 

java.io.PushbackInputStream

extends FilterInputStream


unread()함수를 이용해 읽던 중간에 앞에 새로운 바이트를 끼워넣을 수 있다.

 

- 생성자 ( Constructor )

new PushbackInputStream(InputStream is) : 입력스트림을 이용해 객체를 생성한다.

 

- 지역 함수 ( Local Method )

 unread(int b) / unread(byte[] b) : 1 byte 혹은 byteArray를 unread하여, 읽던 스트림 맨 앞에 위치시킨다.

 // unread 후 read하면 마지막으로 unread한 byte부터 출력된다. ( LIFO )

 


 

※ 객체를 생성할 때 주의해야 할 점 ※

Low-Level class는 High-Level class를 감쌀 수 없다.

 

 

728x90
반응형

'3-2공부 > 네트워크프로그래밍' 카테고리의 다른 글

[Java] Serialize, 직렬화  (0) 2022.10.22
[Java] Writer  (0) 2022.10.22
[Java] Reader  (0) 2022.10.22
[Java] OutputStream  (0) 2022.10.22
[Java] File  (0) 2022.10.22