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);
반응형
'Java' 카테고리의 다른 글
[Java] byte array to String, String to byte array (0) | 2021.09.03 |
---|---|
com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 1 column 1 path $ 해결하기 (0) | 2021.09.02 |
[Java] Ping 보내는 방법 InetAddress.isReachable() (0) | 2021.09.02 |
[Java] Float, Double 크기 비교(compare) (0) | 2021.08.29 |
[Java] String startsWith(), EndsWith() 구현 예제 (0) | 2020.07.20 |
[Java] JSONArray에서 JSONObject 값 얻어오기 (0) | 2020.07.12 |
[Java] java.lang.ArrayIndexOutOfBoundsException (0) | 2020.06.13 |
Java String을 int로 변환, int를 String으로 변환 - String to int, int to String (0) | 2020.05.27 |