Java

[Java] InputStream을 byte 배열(byte[])로 변환

Darane 2021. 9. 2. 10:18

 

Java에서 파일을 읽어서 처리할 때 InputStream을 byte 배열(byte array)로 변환하여 사용할 경우가 있습니다.

변환하는 데 Java에서 기본으로 제공하는 ByteArrayOutputStream 클래스를 사용합니다.

 

 

InputStream.read()를 통해 데이터를 읽고 ByteArrayOutputStream 객체에 데이터를 write 하여 누적시킵니다. 그리고 최종적으로 toByteArray() 함수를 호출하여 byte array로 반환할 수 있습니다.

실제 구현 예제는 아래와 같습니다.

 

예제

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();

buffer의 byte 크기는 알맞게 조절하면 됩니다.

 

 

InputStream.read()를 사용할 때 IOException이 발생할 수 있으므로 Exception 처리가 필요합니다.

1. 파일의 끝이 아닌 다른 이유로 첫 번째 바이트를 읽을 수 없는 경우

2. InputStream이 close 된 경우

3. 기타 I/O Error 발생 한 경우

 

마지막으로 byte 배열(byte array)을 InputStream 객체로 변환하는 건 아래 예제와 같이 할 수 있습니다.

 

예제

byte[] byteArray = bos.toByteArray();
InputStream inputStream = new ByteArrayInputStream(byteArray);

 

반응형