private static byte[] readStream(final InputStream inputStream, final boolean close)
throws IOException {
if (inputStream == null) {
throw new IOException("Class not found");
}
try {
int bufferSize = calculateBufferSize(inputStream);
int inputBufferSize = bufferSize + INPUT_STREAM_DATA_CHUNK_SIZE;
byte[] data = new byte[inputBufferSize];
int bytesRead = inputStream.read(data, 0, bufferSize);
if (bytesRead < 0) {
return new byte[0];
}
int bytesRead2 = inputStream.read(data, bytesRead, inputBufferSize - bytesRead);
if (bytesRead2 < 0 ) {
byte[] result = new byte[bytesRead];
System.arraycopy(data, 0, result, 0, bytesRead);
return result;
}
bytesRead += bytesRead2;
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(bytesRead);
// default buffer size for ByteArrayOutputStream is 32
do {
outputStream.write(data, 0, bytesRead);
} while ((bytesRead = inputStream.read(data, 0, inputBufferSize)) != -1);
outputStream.flush();
return outputStream.toByteArray();
} finally {
if (close) {
inputStream.close();
}
}
}