입력 스트림과 출력 스트림 개념

2022. 4. 25. 23:05java/java

*입력 스트림과 출력 스트림 개념

프로그램이 출발지냐 또는 도착지냐에 다라 스트림의 종류가 결정된다.

프로그램이 데이터를 입력받을 때는 입력 스트림, 프로그램이 데이터를 내보낼 때에는 출발 스트림이라고 부른다.

자바의 기본적인 데이터 입출력( IO : input/output) API는 java.io 패키지에서 제공하고 있다.

 1)바이트 기반 스트림

  -그림, 멀티미디어, 문자등 모든 종류의 데이터를 받고 보낼 수 있다.

 2)문자 기반 스트림

  -문자만 받고 보낼 수 있도록 특화되어 있다.

 

* InputStream

 1)바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스이다.

 2)InputStream의 주요 메소드

 

 

read()메소드

 -입력 스트림으로부터 1바이트를 읽고 4바이트 int 타입으로 러턴한다.

 따라서 리턴된 4바이트 중 끝의 1바이트멘 데이터가 들어 있다.

4byte

[ ][ ][ ][D] = read();

int x = read();

 

입력 스트림으로부터 바이트를 읽을 수 없다면 read()메소드는 -1을 리턴한다.

InputStream is = new FileInputStream("c:/test.jpg");
int readByte;
while((readByte=is.read()) != -1) {  read()메소드가 읽을 수 있을때까지 루프를 돌며 한 바이트씩 읽음

}

 

read(byte[] b)

-입력 스트림으로부터 배열이 받을 수 있는 범위 만큼 한번에 루핑해서 읽어들이기 때문에 루핑 횟수가 현저히 줄어든다 그러므로 많은 양의 바이트를 읽을 때는 read(byte []) 메소드를 사용하는 것이 좋다.

InputStream is = new FileInputStream("c:/test.jsp");
int readByteNo;
String data="";
byte[ ] readBytes = new Byte[100];
while((readByteN0=is.read(readByte)) != -1) {
    data = new String(readBytes, 0, readByteNo); //String data type 변수 data에 readBytes 배열에
                                                 //담긴 숫자를 문자열로 복원해서 담는 코드
                                                 //readBytes[0] 부터 readByteNo개수 만큼 읽어들임
}
System.out.println(data);

 

close()

-InputStream을 더 이상 사용하지 않을 경우에는 close() 메소드를 호출해서 InputStream에서 사용했던 시스템 자원을 풀어준다.

'java > java' 카테고리의 다른 글

스레드 상태  (0) 2022.04.26
동기화 메소드와 동기화 블록  (0) 2022.04.26
스레드 우선 순위  (0) 2022.04.23
작업 스레드 생성과 실행  (0) 2022.04.22
프로세스와 스레드  (0) 2022.04.22