
- 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 - PushbackReader unread(int c) method
Description
The Java PushbackReader unread(int c) method pushes back a single character by copying it to the front of the pushback buffer. After this method returns, the next character to be read will have the value (char)c.
unread(int c) method −
Purpose − Pushes back a single character so that it will be returned by the next read().
Can be used for lookahead or reprocessing characters.
If the pushback buffer is full, it throws an IOException.
Declaration
Following is the declaration for java.io.PushbackReader.unread(int c) method.
public void unread(int c)
Parameters
c − The int value representing a character to be pushed back.
Return Value
This method does not return a value.
Exception
IOException − If there is insufficient room in the pushback buffer, or if some other I/O error occurs.
Example - Usage of PushbackReader unread(int c) method
The following example shows the usage of PushbackReader unread(int c) method.
PushbackReaderDemo.java
package com.tutorialspoint; import java.io.IOException; import java.io.PushbackReader; import java.io.StringReader; public class PushbackReaderDemo { public static void main(String[] args) { String s = "Hello World"; // create a new StringReader StringReader sr = new StringReader(s); // create a new PushBack reader based on our string reader PushbackReader pr = new PushbackReader(sr, 20); try { // read the first five chars for (int i = 0; i < 5; i++) { char c = (char) pr.read(); System.out.print("" + c); } // change line System.out.println(); // unread a character pr.unread('F'); // read the next char, which is the one we unread char c = (char) pr.read(); // print that character System.out.println("" + c); // close the stream pr.close(); } catch (IOException ex) { ex.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result −
Hello F
Example - Push back one character and read it again
The following example shows the usage of PushbackReader unread(int c) method.
PushbackReaderDemo.java
package com.tutorialspoint; import java.io.IOException; import java.io.PushbackReader; import java.io.StringReader; public class PushbackReaderDemo { public static void main(String[] args) { try (PushbackReader reader = new PushbackReader(new StringReader("Hello"), 5)) { int ch = reader.read(); // Reads 'H' System.out.println("Read character: " + (char) ch); reader.unread(ch); // Push back 'H' System.out.println("Character unread."); int reread = reader.read(); // Reads 'H' again System.out.println("Read after unread: " + (char) reread); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Read character: H Character unread. Read after unread: H
Explanation
'H' is read, pushed back, and read again.
This shows how unread(int) can reverse a read operation temporarily.
Example - Push back only digits during parsing
The following example shows the usage of PushbackReader unread(int c) method.
PushbackReaderDemo.java
package com.tutorialspoint; import java.io.IOException; import java.io.PushbackReader; import java.io.StringReader; public class PushbackReaderDemo { public static void main(String[] args) { try (PushbackReader reader = new PushbackReader(new StringReader("123A456"), 10)) { int ch; while ((ch = reader.read()) != -1) { if (!Character.isDigit(ch)) { reader.unread(ch); // Push back the non-digit System.out.println("Non-digit encountered and pushed back: " + (char) ch); break; } System.out.println((char) ch); } // Read the non-digit after the digits System.out.println("\nNext character after digits: " + (char) reader.read()); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
1 2 3 Non-digit encountered and pushed back: A Next character after digits: A
Explanation
The code reads digits until it finds 'A'.
'A' is unread (pushed back), then processed separately.
Useful in parsers where you need to "peek" ahead.