Java - InputStream, OutputStream

Programming/Java 2015. 12. 8. 19:41


<스트림>

어느 한쪽에서 다른 쪽으로 데이터를 전달하려면 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림이라 한다.

먼저, InputStream, OutputStream에 대해서 알아보자.

InputStream은 입력 스트림이고, OutputStream는 출력 스트림이다. 이 클래스들은 java.io패키지에서 재정의 되어있고, 많은 종류의 입출력 관련 클래스들을 제공하고 있다.

 



<InputStream>

InputStream의 메소드를 알아보자.

abstract int read() : 1바이트를 읽어온다. 읽어올 바이트가 없다면 -1을 반환한다. abstract 메소드이기 때문에 무조건 정의해줘야함.

void close() : 스트림을 닫는다.

void mark(int readlimit) : 현재 위치를 표시한다.  추 후에 reset()에 의해서 표시해 놓은 위치로 다시 돌아갈 수 있다. readlimit은 되돌아 갈 수 있는 바이트의 수

int read(byte[] b) : 배열 b의 크기만큼 읽어서 배열을 채우고 읽어 온 데이터의 수를 반환.

int read(byte[] b, int start, int len) : 최대 len개의 byte를 읽어서 배열 b의 지정된 위치인 start부터 저장.

void reset() : 스트림에서의 위치를 마지막으로 mark()이 호출되었던 위치로 되돌린다.

 

public abstract class InputStream {

 

   abstract int read();   // 입력 스트림으로부터 1바이트를 읽어서 반환하고, 없으면 -1을 반환.

   int read(byte[] b, int start, int len) {

      for(int i=start; i < start+len; i++) {

          b[i] = (byte)read();

      }

 

int read(byte[] b) {

   return read(b, 0, b.length);

}

이것은 InputStream의 주요기능은 read메소드를 다시 이해하기 쉽게 바꿔보았다.

 



<OutputStream>

void close() : 입력소스를 닫는다.

void flush() : 스트림의 버퍼에 있는 모든 내용을 출력소스에 쓴다.

abstract void write(int b) : 주어진 값을 출력소스에 쓴다.

void write(byte[] b) : 주어진 배열 b에 저장된 모든 내용을 출력소스에 쓴다.

void write(byte[] b, int start, int len) : 주어진 배열 b에 저장된 내용 중에서 start번째 부터 len개 만큼만을 읽어서 출력소스에 쓴다.

 

<실습>



-결과-


'Programming > Java' 카테고리의 다른 글

Java - File클래스  (0) 2015.12.08
Java - FileInputStream, FileOutputStream  (0) 2015.12.08
Java - Thread, (run()메소드, start()메소드의 차이)  (0) 2015.12.08
Java - 예외 처리 (Exception)  (0) 2015.12.08
Java - Hashtable, HashMap  (0) 2015.12.08
posted by 경원구