ByteArrayInputStream class is a subclass of InputStream abstract class. It creates an inputstream, which is used to read byte/bytes from its own internal buffer, which is initialized using a byte array.

Java ByteArrayInputStream class contains an internal buffer which is used to read byte array as stream. In this stream, the data is read from a byte array.

The buffer of ByteArrayInputStream automatically grows according to data.

  • Constructors of ByteArrayInputStream

    Constructor Description
    ByteArrayInputStream(byte[] data) Creates a new byte array input stream which uses data as its buffer array.
    ByteArrayInputStream(byte[] data, int offset, int len) Creates a new byte array input stream which uses data as its buffer array that can read up to specified len bytes of data from an array.
  • Some Methods for reading ByteArrayInputStream

    Access modifier of these methods is public.

    Method Description
    available() This method gives the remaining number of bytes available to read from this input stream.
    read() This method reads one byte at a time from this input stream.
    read(byte[]) This method reads a whole byte array at a time from this input stream.
    close() This method closes this input stream and also frees any resources connected with this input stream.

    Example : Reading the data form byte array using ByteArrayInputStream.

    public class ByteArrayInput {
        public static void main(String[] args) throws IOException {
            String content = "Java is multi-threaded programming language.";
            byte[] b = content.getBytes();//getting the byte array
            ByteArrayInputStream bais = new ByteArrayInputStream(b);
            //reading the content byte by byte
            while (true) {
                int i =;
                if (i == -1) {
                System.out.print((char) i);

    Java is multi-threaded programming language.

As i was declared as an int, so it's casted to char, which casts the byte containted in it to a character and this character is printed on the screen.

What next?

The next topic is ByteArrayOutputStream in java

Share this page