Java - PushbackReader markSupported() method



Description

The Java PushbackReader markSupported() method tells whether this stream supports the mark() operation, which it does not.

markSupported() method −

  • This method tells whether the mark() and reset() methods are supported by the stream.

  • For PushbackReader, it always returns false.

  • Useful to check before using mark() to avoid exceptions.

Declaration

Following is the declaration for java.io.PushbackReader.markSupported() method.

public boolean markSupported()

Parameters

NA

Return Value

This method returns false as mark() operation is not supported.

Exception

NA

Example - Usage of PushbackReader markSupported() method

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) {
      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();

         // check if mark is supported by this class
         System.out.println("" + pr.markSupported());

         // 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
false

Example - Checking markSupported() Before Marking

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"))) {
         if (reader.markSupported()) {
            reader.mark(10);
            System.out.println("Mark set.");
         } else {
            System.out.println("Mark/reset not supported on PushbackReader.");
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Mark/reset not supported on PushbackReader.

Explanation

  • markSupported() is called to check if mark() is usable.

  • Since PushbackReader does not support it, a warning is printed instead of throwing an exception.

java_io_pushbackreader.htm

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