Example 1: Java Program to Convert InputStream to Byte Array
import java.io.InputStream;
import java.util.Arrays;
import java.io.ByteArrayInputStream;
public class Main {
public static void main(String args[]) {
try {
// create an input stream
byte[] input = {1, 2, 3, 4};
InputStream stream = new ByteArrayInputStream(input);
System.out.println("Input Stream: " + stream);
// convert the input stream to byte array
byte[] array = stream.readAllBytes();
System.out.println("Byte Array: " + Arrays.toString(array));
stream.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
Output
Input Stream: java.io.ByteArrayInputStream@27082746 Byte Array: [1, 2, 3, 4]
In the above example, we have created an input stream named stream. Note the line,
byte[] array = stream.readAllBytes();
Here, the readAllBytes()
method returns all the data from the stream and stores in the byte array.
Note: We have used the Arrays.toString()
method to convert all the entire array into a string.
Example 2: Convert InputStream to Byte Array using Output Stream
import java.io.InputStream;
import java.util.Arrays;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
public class Main {
public static void main(String args[]) {
try {
// create an input stream
byte[] input = {1, 2, 3, 4};
InputStream stream = new ByteArrayInputStream(input);
System.out.println("Input Stream: " + stream);
// create an output stream
ByteArrayOutputStream output = new ByteArrayOutputStream();
// create a byte array to store input stream
byte[] array = new byte[4];
int i;
// read all data from input stream to array
while ((i = stream.read(array, 0, array.length)) != -1) {
// write all data from array to output
output.write(array, 0, i);
}
byte[] data = output.toByteArray();
// convert the input stream to byte array
System.out.println("Byte Array: " + Arrays.toString(data));
stream.close();
}
catch (Exception e) {
e.getStackTrace();
}
}
}
Output
Input Stream: java.io.ByteArrayInputStream@27082746 Byte Array: [1, 2, 3, 4]
In the above example, we have created an input stream from the array input. Notice the expression,
stream.read(array, 0, array.length)
Here, all elements from stream are stored in array, starting from index 0. We then store all elements of array to the output stream named output.
output.write(array, 0, i)
Finally, we call the toByteArray()
method of the ByteArrayOutputStream
class, to convert the output stream into a byte array named data.