Write a Java Program to Convert the InputStream into Byte Array

In Java, an InputStream is an abstract class that represents an input stream of bytes.

It is a fundamental class that is used to read binary data from different sources like files, network connections, or input devices.

Sometimes, we need to convert an InputStream into a byte array to manipulate the data further.

In this tutorial, we will discuss how to convert an InputStream into a byte array in Java.


Before we dive into the implementation, let’s first understand what a byte array is.

A byte array is a sequence of bytes that can be used to store and manipulate binary data.

In Java, byte arrays are represented by the byte data type.

To convert an InputStream into a byte array, we can follow the below steps:

  1. Create an InputStream object and read the data from the input source.
  2. Create a ByteArrayOutputStream object to store the data in memory.
  3. Use a buffer to read the data from the InputStream and write it to the ByteArrayOutputStream.
  4. Convert the ByteArrayOutputStream into a byte array using the toByteArray() method.

Here is the Java code that demonstrates the above steps:

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.IOException;

public class InputStreamToByteArray {
    public static byte[] toByteArray(InputStream inputStream) throws IOException {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int length;
        while ((length = inputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, length);
        }
        return outputStream.toByteArray();
    }
}

Let’s break down the code above:

  • We first create a ByteArrayOutputStream object to store the data in memory.
  • We then use a buffer to read the data from the InputStream and write it to the ByteArrayOutputStream. We use a while loop to read the data until the end of the input stream is reached.
  • Finally, we convert the ByteArrayOutputStream into a byte array using the toByteArray() method.

To use the above code, you can simply pass your InputStream object to the toByteArray() method like this:

InputStream inputStream = ...; // your input stream
byte[] byteArray = InputStreamToByteArray.toByteArray(inputStream);

In conclusion, converting an InputStream into a byte array is a simple process in Java.

We just need to use a ByteArrayOutputStream to store the data in memory, read the data using a buffer, and finally convert the ByteArrayOutputStream into a byte array.

This can be useful in many scenarios where we need to manipulate binary data in Java.