Java - PushbackReader mark(int readAheadLimit) method



Description

The Java PushbackReader mark(int readAheadLimit) method marks the present position in the stream. The mark for class PushbackReader always throws an exception.

Declaration

Following is the declaration for java.io.PushbackReader.mark(int readAheadLimit) method.

public void mark(int readAheadLimit)

Parameters

readAheadLimit − Limit on the number of characters that may be read while still preserving the mark. After reading this many characters, attempting to reset the stream may fail.

Return Value

This method does not return a value.

Exception

IOException − Always, since mark is not supported.

Example - Usage of PushbackReader mark(int readAheadLimit) method

The following example shows the usage of PushbackReader mark(int readAheadLimit) 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();

         // mark the current position results in exception
         pr.mark(5);

         // 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
java.io.IOException: mark/reset not supported

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 - Try to use mark-reset logic with PushbackReader

The following example shows the usage of PushbackReader mark(int readAheadLimit) 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("Java"))) {
         reader.mark(100); // Attempting to mark
         char[] buffer = new char[4];
         reader.read(buffer);
         reader.reset(); // Will not reach this; mark() already throws
      } catch (IOException e) {
         System.out.println("Caught IOException: " + e.getMessage());
      }
   }
}

Output

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

Caught IOException: mark/reset not supported
java_io_pushbackreader.htm
Advertisements