
- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
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.