Related Articles

Related Articles

PushbackInputStream read() method in Java with Examples
  • Last Updated : 05 Jun, 2020

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)

Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :