Java.io.Reader.mark() Method



Description

The java.io.Reader.mark(int readAheadLimit) method marks the present position in the stream. Subsequent calls to reset() will attempt to reposition the stream to this point.

Declaration

Following is the declaration for java.io.Reader.mark() 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 − If the stream does not support mark(), or if some other I/O error occurs

Example

The following example shows the usage of java.io.Reader.mark() method.

package com.tutorialspoint;

import java.io.*;

public class ReaderDemo {
   public static void main(String[] args) {
   
      try {
         String s = "Hello World";

         // create a new StringReader
         Reader reader = new StringReader(s);

         // read the first five chars
         for (int i = 0; i < 5; i++) {
            char c = (char) reader.read();
            System.out.print("" + c);
         }

         // mark current position for maximum of 10 characters
         reader.mark(10);

         // read five more chars
         for (int i = 0; i < 6; i++) {
            char c = (char) reader.read();
            System.out.print("" + c);
         }

         // reset back to the marked position
         reader.reset();

         // change line
         System.out.println();

         // read six more chars
         for (int i = 0; i < 6; i++) {
            char c = (char) reader.read();
            System.out.print("" + c);
         }

         // close the stream
         reader.close();

      } catch (IOException ex) {
         ex.printStackTrace();
      }
   }
}

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

Hello World
 World
java_io_reader.htm
Advertisements