しかし、このInputStreamはバイトストリームであるため、そのままでは扱いにくい場合があります。
そこで、本記事ではInputStreamをByte配列に変換する方法について解説します。
具体的には、ByteArrayOutputStreamを使用する方法を使用する方法を紹介します。
これらの方法をマスターすれば、より効率的にInputStreamからデータを扱うことができるようになります。
=== 目次 ===
InputStremをByte配列に変換する方法
InputStreamをByte配列に変換するには、InputStreamの内容をByteArrayOutputStreamに書き出し、ByteArrayOutputStreamをByte配列に変換すればOKです。以下、サンプルコードです。
byte[] result;
try {
File f = new File("FILEPATH");
InputStream is = new FileInputStream(f);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while((length = is.read(buffer)) != -1) {
bos.write(buffer, 0, length);
}
result = bos.toByteArray();
bos.close();
is.close();
} catch (Exception e) {
} catch (OutOfMemoryError e) {
}
while文の箇所でInputStreamの内容をByteArrayOutputStreamに書き出してします。その後はtoByteArray()メソッドを使用してByte配列に変換して終わりです。
IOExceptionなど以外にもOutOfMemoryErrorも発生しやすいのでtry-catchしておくと良いでしょう。