KH/JAVA

InputStream _ 입력 스트림

오늘의 진 2023. 3. 10. 23:17

Java.io.InputStream 

 

자바에서 제공하는 기본 입력스트림이다. 
바이트 데이터를 읽는데 사용한다. 
서브 클레스로 인스턴스를 작성해도 InputStream으로 반환한다. 
  • FileInputStream : 파일로부터 데이터를 읽는데 사용
  • TelnetInputStream : 네트워크 연결로부터 읽음 
  • ByteArrayInputStream : 바이트 배열로부터 읽음 

 

리턴타입 메소드 설명
int read() 입력된 스트림으로부터 1바이트를 읽고 읽은 바이트 리턴
int read(byte[] b) 입력된 스트림으로 부터 읽은 바이트들을 매개값으로 주어진
바이트 배열 b에 저장.
실제 읽은 바이트 수 리턴 
int read(byte[] b , int off, int len) 입력 스트림으로부터 len개의 바이트 만큼 읽고 매개값으로 주어진 바이트 배열 b를 off 부터 len까지 저장한다. 
그리고 실제로 읽은 바이트 수인 len개를 리턴. 
len개를 모두 읽지 못하면 실제로 읽은 바이트 수 리턴
void close() 사용한 시스템 자원을 반납하고 입력 스트림을 닫는다. 

 

 

 

read() 

  • InputStream의 기본 메소드 
  • 단일 바이트를 읽으며 0-255사이의 정수 타입을 반환한다.
  • 더이상 반환할 값이 들어있지 않으면 -1을 반환한다. 
  • 반환 타입 : int 

 

read(byte[] byteArray)  와 read(byte[] byteArray, int offset, int length )

  • read(byte[] byteArray ) : 배열의 크기만큼 읽는다. 
  • read(byte[] byteArray , int offset , int length ) : offset부터 length 까지 읽는다. 
  • 스트림의 끝에 도달하면 -1을 반환한다. 
InputStream is = null;        
ByteArrayOutputStream bos = new ByteArrayOutputStream();

int length;
byte[] buffer = new byte[2048];
try {
    while ((length = is.read(buffer, 0, buffer.length)) != -1) {
        bos.write(buffer, 0, length);
    }
} catch (IOException e) {
    e.printStackTrace();
}

byte[] byteArray = bos.toByteArray();

 

'KH > JAVA' 카테고리의 다른 글

API와 REST API  (0) 2023.03.28
getClassLoader().getResource() 와 getResource()  (0) 2023.03.10
# 57 채팅 프로그램 구현하기  (0) 2022.08.19
# 55 네트워킹(Networking)  (0) 2022.08.18
# 51 Swing(2) -Table  (0) 2022.08.16