Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

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