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().

Advertisements
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy