Signup/Sign In
Ask Question
Not satisfied by the Answer? Still looking for a better solution?

Convert InputStream to byte array in Java

How would I read a whole InputStream into a byte array?
by

3 Answers

akshay1995
You can use Apache Commons IO to handle this and similar tasks.

The IOUtils type has a static method to read an InputStream and return a byte[].

InputStream is;
byte[] bytes = IOUtils.toByteArray(is);

Internally this creates a ByteArrayOutputStream and copies the bytes to the output, then calls toByteArray(). It handles large files by copying the bytes in blocks of 4KiB.
sandhya6gczb
You need to read each byte from your InputStream and write it to a ByteArrayOutputStream.

You can then retrieve the underlying byte array by calling toByteArray():

InputStream is = ...
ByteArrayOutputStream buffer = new ByteArrayOutputStream();

int nRead;
byte[] data = new byte[16384];

while ((nRead = is.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}

return buffer.toByteArray();
RoliMishra
There’s a simple solution without the need for a 3rd party library, we can do that using java 9

InputStream is;

byte[] array = is.readAllBytes();


Note also the convenience methods readNBytes(byte[] b, int off, int len) and transferTo(OutputStream) addressing recurring needs.

Login / Signup to Answer the Question.