Get Byte Array From InputStream


Following method can use for retrieving byte array from an object of java.io.InputStream




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 = inStream.read(bytes,
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
inStream.close();
return bytes;
}



3 comments:

  1. very nice. for more java examples visit java2novice.com site

    ReplyDelete
  2. Nice Example. Get more java examples on concretepage.com

    ReplyDelete
  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.

    ReplyDelete