私は通常、次の2つのアプローチを使用して配列に変換Resourceします。byte[]
1-アプローチ
必要なのは、最初getInputStream()にResourceオブジェクトを呼び出してから、それをconvertStreamToByteArray次のようなメソッドに渡すことです。
InputStream stream = resource.getInputStream();
long size = resource.getFile().lenght();
byte[] byteArr = convertStreamToByteArray(stream, size);
public byte[] convertStreamToByteArray(InputStream stream, long size) throws IOException {
// check to ensure that file size is not larger than Integer.MAX_VALUE.
if (size > Integer.MAX_VALUE) {
return new byte[0];
}
byte[] buffer = new byte[(int)size];
ByteArrayOutputStream os = new ByteArrayOutputStream();
int line = 0;
// read bytes from stream, and store them in buffer
while ((line = stream.read(buffer)) != -1) {
// Writes bytes from byte array (buffer) into output stream.
os.write(buffer, 0, line);
}
stream.close();
os.flush();
os.close();
return os.toByteArray();
}
2-アプローチ
Konstantin V. Salikhovが示唆したように、そのメソッドを使用org.apache.commons.io.IOUtilsして呼び出し、このようなオブジェクトを渡すことができます...IOUtils.toByteArray(stream) staticInputStream
byte[] byteArr = IOUtils.toByteArray(stream);
Note -これについては、内部 toByteArray(...)でファイルサイズが。より大きくInteger.MAX_VALUEないことを確認するためにチェックするので、これをチェックする必要はありません。