
- 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 unread(byte[] b) method
Description
The Java PushbackInputStream unread(byte[] b) method pushes back an array of bytes by copying it to the front of the pushback buffer. After this method returns, the next byte to be read will have the value b[0], the byte after that will have the value b[1], and so forth.
unread(byte[] b) method −
Pushes back (unreads) the entire byte array b into the stream.
These bytes will be returned by the next calls to read().
Commonly used in parsing scenarios where you need to "peek ahead" and then backtrack.
Declaration
Following is the declaration for java.io.PushbackInputStream.unread(byte[] b) method.
public void unread(byte[] b)
Parameters
b − The byte array to push back.
Return Value
This method does not return a value.
Exception
IOException − If there is not enough room in the pushback buffer for the specified number of bytes, or this input stream has been closed by invoking its close() method.
Example - Usage of PushbackInputStream unread(byte[] b) method
The following example shows the usage of PushbackInputStream unread(byte[] b) 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, 10); 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]); } // change line System.out.println(); // create a new byte array to be unread byte[] b = {'W', 'o', 'r', 'l', 'd'}; // unread the byte array pis.unread(b); // read again 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 World
Example - Unread an entire byte array and read it back
The following example shows the usage of PushbackInputStream markSupported() 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) throws IOException { byte[] data = "12345".getBytes(); byte[] buffer = new byte[5]; try (PushbackInputStream pbis = new PushbackInputStream(new ByteArrayInputStream(data), 10)) { pbis.read(buffer, 0, 5); // Read all bytes System.out.println("Original: " + new String(buffer)); // Output: 12345 pbis.unread(buffer); // Push back all bytes byte[] reread = new byte[5]; pbis.read(reread); // Read them again System.out.println("After unread: " + new String(reread)); // Output: 12345 } } }
Output
Let us compile and run the above program, this will produce the following result−
Original: 12345 After unread: 12345
Explanation
Reads all 5 bytes into buffer.
Pushes them back using unread(buffer).
Reads them again to confirm they were successfully unread.
Example - Peek at initial bytes, then unread them for re-processing
The following example shows the usage of PushbackInputStream unread(byte[] b) 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) throws IOException { byte[] data = "HelloWorld".getBytes(); byte[] peek = new byte[5]; try (PushbackInputStream pbis = new PushbackInputStream(new ByteArrayInputStream(data), 10)) { pbis.read(peek); // Peek first 5 bytes: "Hello" System.out.println("Peeked: " + new String(peek)); // Output: Hello // Push them back into the stream pbis.unread(peek); byte[] full = new byte[10]; pbis.read(full); // Read full 10 bytes System.out.println("Full after unread: " + new String(full)); // Output: HelloWorld } } }
Output
Let us compile and run the above program, this will produce the following result−
Peeked: Hello Full after unread: HelloWorld
Explanation
Peeks at first 5 bytes (Hello) to inspect the data.
Pushes them back to the stream.
Reads the full stream again from the beginning (HelloWorld).