Java PushbackReader Class with Examples
Java is wide range and used in various applications.
PushbackReader is discussed in a detailed manner. It allows characters to be pushed back into the Stream. The unread() method of this class allows us to pushback the characters.
Explanation of Java PushbackReader Class:
- A character stream reader is the Java PushbackReader class.
- It overrides the FilterReader class and pushes a character back into the stream.
- Pushing characters back into the stream is possible with this class, which is a character stream class.
- The characters can be pushed back using this class’s unread() function.
Pushback explanation:
- A byte can be received from an input stream and then “pushed back”—that is, returned to the stream—by using pushback.
- The PushbackInputStream class puts this concept into practice. It offers a way to “peek” into data coming from an input stream without interfering with it.
How to create Java PushbackReader:
- You must first build an instance of a Java PushbackReader before you can utilize it.
- By utilizing the new operator in ordinary object instantiation, you can create a PushbackReader.
- A Java Reader is required to be passed to the PushbackReader constructor in order for it to read the characters.
PushbackReader pushbackReader = new PushbackReader(new FileReader(" "))
Declaration:
public class PushbackReader extends FilterReader
Parameter:
- C is the int value of the character that has to be pushed back.
Return Value:
It does not return any Value
Exception:
- IOException − When an I/O error occurs or the pushback buffer fills up.
Read characters:
It used to read the characters of pushbackreader:
int aChar = pushbackReader.read(); while(aChar != -1) { System.out.println((char) aChar); aChar = pushbackReader.read(); }
Class Methods:
Method | Description |
int read() | It reads one character at a time. |
void mark(int readAheadLimit) | It serves as a marker for the current location within a stream. |
boolean ready() | It is employed to determine when the stream is prepared for reading. |
boolean markSupported() | To find out if the stream supports the mark() action, use this. |
long skip(long n) | The character is skipped using it. |
void unread (int c) | By copying the character to the pushback buffer, it is utilized to push the character back. |
void unread (char[] cbuf) | It is used to push the character back by copying it to the pushback buffer. |
void reset() | The stream is reset using it. |
void close() | The stream is closed using it. |
Constructor:
Constructor | Description |
PushbackReader(Reader in ) | It creates a new pushback with one character pushback buffer. |
PushbackReader (Reader in, int size) | It creates a new pushback with pushback with given size. |
Example 1:
import java.io.*; public class TechVidvan { public static void main(String[] args) throws Exception { char ary[] = {'1', '-', '-', '2', '-', '3', '4', '-', '5'}; CharArrayReader reader = new CharArrayReader(ary); PushbackReader push = new PushbackReader(reader); int i; while ((i = push.read()) != -1) { if (i == '-') { int j; if ((j = push.read()) == '-') { System.out.print("#*"); } else { push.unread(j); // push back single character System.out.print((char) i); } } else { System.out.print((char) i); } } } }
Output:
1#*2-345
Example 2:
import java.io.*; public class TechVidvan{ public static void main(String[] args) { String s = "TechVidvan"; StringReader sr = new StringReader(s); PushbackReader pr = new PushbackReader(sr, 20); try { for (int i = 0; i < 5; i++) { char c = (char) pr.read(); System.out.print("" + c); } System.out.println(); pr.unread('A'); char c = (char) pr.read(); System.out.println("" + c); pr.close(); } catch (IOException ex) { ex.printStackTrace(); } } }
Output:
TechV
A
Example 3:
import java.io.PushbackReader; import java.io.StringReader; public class TechVidvan { public static void main(String args[]) { try { String str = “Welcome to TechVidvan Java Tutorials”; StringReader reader = new StringReader(str); PushbackReader pushbackReader = new PushbackReader(reader); System.out.println("pushbackReader ready: " + pushbackReader.ready()); for (int i = 0; i < 9; i++) { char ch = (char) pushbackReader.read(); System.out.print(ch); pushbackReader.skip(1); } } catch (Exception e) { System.out.print("Error: "+e.toString()); } } }
Output:
pushbackReader ready: true
Wloet ehi
Constructors:
- PushbackReader(Reader push): Makes a new Pushback Reader and uses a character Pushback buffer to “push” it.
- PushbackReader(Reader push, int size): Specifies the size of the pushback buffer when creating a new Pushback Reader.
Benefits:
- One or more characters can be returned to the input stream using the PushbackReader class. You can now see into the input stream thanks to this.
- generates a buffered stream that permits the pushing back of a single character. bufSize is the size of the pushback buffer that is passed.
Closing of PushBackReader:
- It is important to remember to close the PushbackReader when you have completed reading the characters.
- The Reader instance that a PushbackReader is reading from will also close when the PushbackReader is closed.
- By using this to close: pushbackReader.close()
Conclusion
We have learned about the PushbackReader details. It is used as a pushbackreader in the stream. This feature is handy for parsing scenarios where you may need to backtrack in the input stream.