Stream의 BufferdOutputStream, BufferdInputStream






 [Stream Class ]

  

Stream 클래스는 크게 4가지로 나눈다 

이중 본 내용에서는 BufferdOutputStream, BufferdInputStream에 대해서 알아보도록 하자 

하지만 BufferdOutputStream은 printOutputStream을 것을 더 추천한다.


BufferdOutputStream은 read만 사용할 수 있지만 

printOutputStream은 read 뿐만 아니라, print 까지 사용할 수 있다. 




[ 알고 갑시다 ]

 ** OutPutStream - ByteStream들 중에서 출력에 관련되 메소드 이름을 소유한 추상클래스

  

  void close () : 스트림 닫기 

  void flush() : 현재 버퍼에 남아있는 내용 모두 출력 

  void write(int r)  : r을 기록 

  void write(byte[] b ) : b의 모든 내용을 기록 

  void write(byte [] b , int offset, int length) : b 배열에서 offset 부터 length만큼 기록 



** InPutStream - ByteStream들의 입력에 관련된 메소드 이름을 소유한 추상 클래스 


int available()  : 스트림에서 읽을 수 있는 크기를 바이트 단위로 리턴 

int read() : 하나의 바이트를 읽어서 정수로 리턴 못 읽으면 음수를 리턴 

int read(byte[] b ) : b배열의 크기만큼을 읽어서 b에 저장하고 읽은 바이트 수를 리턴 데이터를 못 읽으면 0보다 작거나 같은 수를 리턴 

int read(byte [] b , int offset, int length) : b배열에 offset 부터 length만큼을 읽어서 저장하고 읽은 개수를 리턴 데이터를 못 읽으면 0보다 작거나 같은 수를 리턴 







**BufferdOutputStream - > PrintStream 

2개의 스트림을 모아서 처리를 합니다. 

출력을 할 때 마다 운영체제의 native method를 호출하지 않고 모아서 호출하기 때문에 호출 횟수를 줄여서 출력을 효율적으로 할 수 있습니다.




**BufferdOutputStream - 한바이트씩 출력하지 않고 바이트배열(버퍼)를 이용해서 한번에 출력


[생성자]


BufferdOutputStream(OutputStream out) :OutputStream을 출력소스로하고, 크기를 지정하지 않음으로 8192byte크기의 버퍼를 갖게된다.


BufferdOutputStream(OutPutStream out, int size) : OutStream 인스턴스를 출력소르로하며 지정된 크기의 버퍼를 갖는BufferdOutputStream 인스턴스를 생성한다 . 


마지막 출력부분이 쓰이지 못하고 BufferedOutputStream의 버퍼에 남아 있는 채로 프로그램이 종료될수 있습니다.

그래서 flsush()나 Close()를 호출해서 마지막에 버퍼에 있는 모든 내용이 출력소스에 출력되도록해야합니다




**PrintStream


[생성자] 


PrintStream(String fileName) : 파일 경로를 가지고 생성

PrintStream(OutPutStream out ) : OutPutStream 객체를 가지고 생성 



[메소드]

print(), printf(), println() 메소드를 제공 등....





[코드]


void flush() : 현재 버퍼에 남아있는 내용 모두 출력 





[결과]







**BufferdInputStream - 한바이트씩 입력하지 않고 바이트배열(버퍼)를 이용해 한번에 입력



[생성자]


BufferedInputStream(InputStream in, int size) : InPutStream 인스턴스를 입력소스로하며 버퍼의 크기를 설정해서 객체를 생성

 

BufferedInputStream(InputStream in)  : InputStream 인스턴스를 입력소스로 하며 버퍼의 크기를 지정해주지 않으면 8192로 합니다.

단, InputStream은 추상 클래스여서 직접 넣을수가 없으므로 다른 InPutStream을 대입받아서 생성해야합니다.





[결과]










+ Recent posts