HomeLanguagesJavaPushbackInputStream read() method in Java with Examples

PushbackInputStream read() method in Java with Examples

The read() method of PushbackInputStream class in Java is of two types:

  1. The read() method of PushbackInputStream class in Java is used to read the next byte of data from the input stream. This method returns the read byte from the input stream in the form of an integer.

    Syntax:

    public int read()
              throws IOException
    

    Overrides: This method overrides the read() method of FilterInputStream class.

    Parameters: This method does not accept any parameter.

    Return value: This method returns the next byte of the stream. It returns -1 if the stream is ended.

    Exceptions: This method throws IOException if the input stream is closed by calling the close() method of the same class or an I/O error occurs.

    Below programs illustrate read() method of PushbackInputStream class in IO package:

    Program 1:




    // Java program to illustrate
    // PushbackInputStream read() method
      
    import java.io.*;
      
    public class GFG {
        public static void main(String[] args)
            throws IOException
        {
      
            // Create an array
            byte[] byteArray
                = new byte[] { 'G', 'E', 'E',
                               'K', 'S' };
      
            // Create inputStream
            InputStream inputStr
                = new ByteArrayInputStream(byteArray);
      
            // Create object of
            // PushbackInputStream
            PushbackInputStream pushbackInputStr
                = new PushbackInputStream(inputStr);
      
            for (int i = 0; i < byteArray.length; i++) {
                System.out.println(
                    "Char : "
                    + (char)pushbackInputStr.read());
            }
        }
    }

    
    
    Output:

    Char : G
    Char : E
    Char : E
    Char : K
    Char : S
    

    Program 2:




    // Java program to illustrate
    // PushbackInputStream read() method
      
    import java.io.*;
      
    public class GFG {
        public static void main(String[] args)
            throws IOException
        {
      
            // Create an array
            byte[] byteArray
                = new byte[] { 'G', 'E', 'E', 'K', 'S',
                               'F', 'O', 'R', 'G', 'E',
                               'E', 'K', 'S' };
      
            // Create inputStream
            InputStream inputStr
                = new ByteArrayInputStream(byteArray);
      
            // Create object of
            // PushbackInputStream
            PushbackInputStream pushbackInputStr
                = new PushbackInputStream(inputStr);
      
            for (int i = 0; i < byteArray.length; i++) {
                System.out.println(
                    "Char : "
                    + (char)pushbackInputStr.read());
            }
        }
    }

    
    
    Output:

    Char : G
    Char : E
    Char : E
    Char : K
    Char : S
    Char : F
    Char : O
    Char : R
    Char : G
    Char : E
    Char : E
    Char : K
    Char : S
    
  2. The read(byte[], int, int) method of PushbackInputStream class in Java is used to reads up to given bytes of data from the input stream into an array of bytes. This method does not read one character at a time, it reads several characters at one time.

    Syntax:

    public int read(byte[] b,
                    int offset,
                    int length)
             throws IOException
    

    Overrides: This method overrides the read() method of FilterInputStream class.

    Parameters: This method does not accept three parameters:

    • b – It represents the byte array into which data is read.
    • offset – It represents the starting index in the array.
    • length – It represents the number of byte to be read.

    Return value: This method returns the total number of bytes read. It returns -1 if the stream is ended.

    Exceptions:

    • NullPointerException – This method throws NullPointerException if byte array is null.
    • IndexOutOfBoundsException – This method throws IndexOutOfBoundsException if offset is negative or length is negative or length is greater than the difference of length of array and offset.
    • IOException – This method throws IOException if the input stream is closed by calling the close() method of the same class or an I/O error occurs.

    Below programs illustrate read(byte[], int, int) method of PushbackInputStream class in IO package:

    Program 1:




    // Java program to illustrate
    // PushbackInputStream
    // read(byte[], int, int) method
      
    import java.io.*;
      
    public class GFG {
        public static void main(String[] args)
            throws IOException
        {
      
            // Create buffer
            byte[] b = new byte[1024];
      
            // Create an array
            byte[] byteArray
                = new byte[] { 'G', 'E', 'E',
                               'K', 'S' };
      
            // Create inputStream
            InputStream inputStr
                = new ByteArrayInputStream(byteArray);
      
            // Create object of
            // PushbackInputStream
            PushbackInputStream pushbackInputStr
                = new PushbackInputStream(inputStr);
      
            pushbackInputStr.read(b, 0, 4);
      
            for (int i = 0; i < 4; i++) {
                System.out.print((char)b[i]);
            }
        }
    }

    
    
    Output:

    GEEK
    

    Program 2:




    // Java program to illustrate
    // PushbackInputStream
    // read(byte[], int, int) method
      
    import java.io.*;
      
    public class GFG {
        public static void main(String[] args)
            throws IOException
        {
      
            // Create buffer
            byte[] b = new byte[1024];
      
            // Create an array
            byte[] byteArray
                = new byte[] { 'G', 'E', 'E', 'K', 'S',
                               'F', 'O', 'R', 'G', 'E',
                               'E', 'K', 'S' };
      
            // Create inputStream
            InputStream inputStr
                = new ByteArrayInputStream(byteArray);
      
            // Create object of
            // PushbackInputStream
            PushbackInputStream pushbackInputStr
                = new PushbackInputStream(inputStr);
      
            pushbackInputStr.read(b, 8, 5);
      
            for (int i = 8; i < 13; i++) {
                System.out.print((char)b[i]);
            }
        }
    }

    
    
    Output:

    GEEKS
    

References:
1. https://docs.oracle.com/javase/10/docs/api/java/io/PushbackInputStream.html#read()
2. https://docs.oracle.com/javase/10/docs/api/java/io/PushbackInputStream.html#read(byte%5B%5D, int, int)

RELATED ARTICLES

1 COMMENT

Most Popular

Dominic
32662 POSTS0 COMMENTS
Milvus
131 POSTS0 COMMENTS
Nango Kala
7035 POSTS0 COMMENTS
Nicole Veronica
12173 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12260 POSTS0 COMMENTS
Shaida Kate Naidoo
7161 POSTS0 COMMENTS
Ted Musemwa
7427 POSTS0 COMMENTS
Thapelo Manthata
7124 POSTS0 COMMENTS
Umr Jansen
7127 POSTS0 COMMENTS