JAVA/Input & output

스트림(Stream)_입출력 스트림

반응형

스트림(stream)

- 네트워크 프로그램의 가장 큰 비중은 입출력(I/O)


출력스트림

1. java.io.OutputStream

제공메소드

public abstract void write(int b) throws IOException

public void write(byte[] data) throws IOException

public void write(byte[] data, int offset, int length) throws IOException

public void flush() throws IOException // 버퍼가 아직 가득 차지 않은 상황에서 강제로 버퍼의 내용을 전송

public void close() throws IOException //스트림 사용이 끝나면 해당스트림을 닫는다.


- OutputStream의 서브클래스는 특정매체에 데이터를 쓰기 위해 해당 메소드를 사용한다.

-TelnetOutputStream은 네트워크 연결에 쓰기위해, ByteArrayOutputStream은 확장 바이트 배열에 쓰기위해서 이 메소드를 사용한다. 

- OutputStream의 기반 메소드는 write(int b)이다. 이 메소드는 0에서 255까지의 정수를 인자로 받고 이에 대응하는 바이트를 출력 스트림에 쓴다. write(int b) 메소드가 int 타입을 인자로 받지만, 실제로 부호없는 바이트를 쓴다. 그러나 자바는 unsigned 타이브을 지원하지 않기 때문에 여기서는 int를 사용한다.


해제패턴( java 7 이전)

OutputStream out = null;

try{

out = new FileOutputStream("/tmp/data.txt");

}catch(IOException ex){

System.err.println(ex.getMessage());

}finally{

if(out != null){

try{

out.close();

}catch (IOException ex)}

}

}

}


해제패턴 (java7 이후)

try(OutputStream out = new FileOutputStream("/tmp/data.txt")){

}catch (IOException ex){

System.err.println(ex.getMessage());

}



입력스트림

1. java.io.InputStream

제공메소드

public abstreact int read() throws IOException

public int read(byte[] input) throws IOException

public int read(byte[] input, int offset, int length) throws IOException

public long skip(long n) throws IOException //읽지 않고 넘어가야하는 부분을 스킵 하기 위해서

public int available() throws IOException

public void close() throws IOException


- InputStream의 서브클래스는 특정 매체로부터 데이터를 읽기 위해 이메소드를 사용한다.


int bytesRead =0;

int bytesToRead = 1024;

byte[] input = new byte[bytesToRead];

while (bytesRead < bytesTored){

int result = in.read(input, bytesRead, bytesToRead - bytesRead);

bytesRead += result;

}


※ Available을 이용하여 즉시 읽을 수 있는 바이트 수를 반환하여 읽는 방법

int bytesAvailable = in.available();

byte[] input = new byte[bytesAvailable];

int bytesRead = in.read(input, 0, bytesAvailable);

반응형

'JAVA > Input & output' 카테고리의 다른 글

Java File클래스를 이용한 파일입출력 사용  (0) 2018.05.27
InputStream & OutPutStream  (0) 2016.12.24