
- 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 class
Introduction
The Java PushbackReader class is a character-stream reader that allows characters to be pushed back into the stream.
Class declaration
Following is the declaration for Java.io.PushbackReader class −
public class PushbackReader extends FilterReader
Field
Following are the fields for Java.io.PushbackReader class −
protected Reader in − This is the character-input stream.
protected Object lock − This is the object used to synchronize operations on this stream.
Class constructors
Sr.No. | Constructor & Description |
---|---|
1 |
PushbackReader(Reader in) This creates a new pushback reader with a one-character pushback buffer. |
2 |
PushbackReader(Reader in, int size) This creates a new pushback reader with a pushback buffer of the given size. |
Class methods
Sr.No. | Method & Description |
---|---|
1 |
void close()
This method closes the stream and releases any system resources associated with it. |
2 |
void mark(int readAheadLimit)
This method marks the present position in the stream. |
3 |
boolean markSupported()
This method tells whether this stream supports the mark() operation, which it does not. |
4 |
int read()
This method reads a single character. |
5 |
int read(char[] cbuf, int off, int len)
This method reads characters into a portion of an array. |
6 |
boolean ready()
This method tells whether this stream is ready to be read. |
7 |
void reset()
This method resets the stream. |
8 |
long skip(long n)
This method skips characters. |
9 |
void unread(char[] cbuf)
This method pushes back an array of characters by copying it to the front of the pushback buffer. |
10 |
void unread(char[] cbuf, int off, int len)
This method pushes back a portion of an array of characters by copying it to the front of the pushback buffer. |
11 |
void unread(int c)
This method pushes back a single character by copying it to the front of the pushback buffer. |
Methods inherited
This class inherits methods from the following classes −
- Java.io.Reader
- Java.io.Object
Example - Properly closing a PushbackReader
The following example shows the usage of PushbackReader close() 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, Java!"))) { int ch = reader.read(); System.out.println("First character read: " + (char) ch); // Output: H // Push the character back reader.unread(ch); // Read it again System.out.println("After unread: " + (char) reader.read()); // Output: H // The reader will be automatically closed here due to try-with-resources } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
First character read: H After unread: H
Explanation
Uses try-with-resources to ensure close() is automatically called at the end.
Proper resource handling without explicitly calling close().
Example - Directly calling mark() on PushbackReader
The following example shows the usage of PushbackReader markSupported() 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, world!"))) { System.out.println("markSupported: " + reader.markSupported()); // false reader.mark(10); // This line will throw IOException } catch (IOException e) { System.out.println("Exception caught: " + e.getMessage()); } } }
Output
Let us compile and run the above program, this will produce the following result−
markSupported: false Exception caught: mark/reset not supported
Example - Attempting Mark Without Checking markSupported()
The following example shows the usage of PushbackReader markSupported() 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("World"))) { System.out.println("markSupported: " + reader.markSupported()); // false // Attempting to mark anyway â will throw IOException reader.mark(5); } catch (IOException e) { System.out.println("Exception occurred: " + e.getMessage()); } } }
Output
Let us compile and run the above program, this will produce the following result−
markSupported: false Exception occurred: mark/reset not supported
Explanation
Shows how skipping markSupported() leads to an exception.
Demonstrates the importance of checking before calling mark().