Get Byte Array From InputStream

Following method can use for retrieving byte array from an object of

public static byte[] getBytesFromInputStream(InputStream inStream)
throws IOException {

// Get the size of the file
long streamLength = inStream.available();

if (streamLength > Integer.MAX_VALUE) {
// File is too large

// Create the byte array to hold the data
byte[] bytes = new byte[(int) streamLength];

// Read in the bytes
int offset = 0;
int numRead = 0;
while (offset < bytes.length
&& (numRead =,
offset, bytes.length - offset)) >= 0) {
offset += numRead;

// Ensure all the bytes have been read in
if (offset < bytes.length) {
throw new IOException("Could not completely read file ");

// Close the input stream and return bytes
return bytes;


  1. very nice. for more java examples visit site

  2. Nice Example. Get more java examples on

  3. I didn't think available() returned full size of what you're reading from, just how much is there before system makes another IO call. So I don't get how this doesn't read in just a chunk of the InputStream.