Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Java - PushbackInputStream read() method



Description

The Java PushbackInputStream read() method reads the next byte of data from this input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

This method returns the most recently pushed-back byte, if there is one, and otherwise calls the read method of its underlying input stream and returns whatever value that method returns.

The read() method

  • Reads and returns one byte of data from the input stream.

  • Returns -1 if the end of the stream is reached.

  • The byte is returned as an int in the range 0 to 255.

Declaration

Following is the declaration for java.io.PushbackInputStream.read() method.

public int read()

Parameters

NA

Return Value

This method returns the next byte of data, or -1 if the end of the stream has been reached.

Exception

IOException − If this input stream has been closed by invoking its close() method, or an I/O error occurs.

Example - Usage of PushbackInputStream read() method

The following example shows the usage of PushbackInputStream read() method.

PushbackInputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.PushbackInputStream;

public class PushbackInputStreamDemo {
   public static void main(String[] args) {

      // declare a buffer and initialize its size:
      byte[] arrByte = new byte[1024];

      // create an array for our message
      byte[] byteArray = new byte[]{'H', 'e', 'l', 'l', 'o'};


      // create object of PushbackInputStream class for specified stream
      InputStream is = new ByteArrayInputStream(byteArray);
      PushbackInputStream pis = new PushbackInputStream(is);

      try {
         // read from the buffer one character at a time
         for (int i = 0; i < byteArray.length; i++) {

            // read a char into our array
            arrByte[i] = (byte) pis.read();

            // display the read byte
            System.out.print((char) arrByte[i]);
         }
      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

Hello

Example - Simple read from PushbackInputStream

The following example shows the usage of PushbackInputStream read() method.

PushbackInputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.PushbackInputStream;
import java.io.IOException;

public class PushbackInputStreamDemo {
   public static void main(String[] args) {
      byte[] data = "ABC".getBytes();

      try (PushbackInputStream pbis = new PushbackInputStream(new ByteArrayInputStream(data))) {
         int byteRead;

         while ((byteRead = pbis.read()) != -1) {
            System.out.print((char) byteRead); // Output: ABC
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

ABC

Explanation

  • "ABC" is read one byte at a time using read().

  • Each byte is converted to a character and printed.

  • Loop continues until read() returns -1 (end of stream).

Example - Using unread() and read() together

The following example shows the usage of PushbackInputStream read() method.

PushbackInputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.PushbackInputStream;
import java.io.IOException;

public class PushbackInputStreamDemo {
   public static void main(String[] args) {
      byte[] data = "XYZ".getBytes();

      try (PushbackInputStream pbis = new PushbackInputStream(new ByteArrayInputStream(data))) {
         int firstByte = pbis.read(); // Reads 'X'
         System.out.println("Read: " + (char) firstByte); // Output: X

         pbis.unread(firstByte); // Push 'X' back into stream
         System.out.println("Unread 'X' back into stream.");

         int reread = pbis.read(); // Reads 'X' again
         System.out.println("Read again: " + (char) reread); // Output: X
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Read: X
Unread 'X' back into stream.
Read again: X

Explanation

  • Reads 'X' using read().

  • Uses unread() to push 'X' back.

  • Calls read() again to read 'X' a second time.

java_io_pushbackinputstream.htm
Advertisements