Java - StringReader reset() method



Description

The Java StringReader reset() method resets the stream to the most recent mark, or to the beginning of the string if it has never been marked.

Declaration

Following is the declaration for java.io.StringReader.reset() method.

public void reset()

Parameters

NA

Return Value

This method does not return a value.

Exception

IOException − If an I/O error occurs.

Example - Usage of StringReader reset() method

The following example shows the usage of StringReader reset() method.

StringReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.StringReader;

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

      // create a new StringReader
      StringReader sr = new StringReader(s);

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

         // mark the reader at position 5 for maximum 6
         sr.mark(6);

         // read the next six chars
         for (int i = 0; i < 6; i++) {
            char c = (char) sr.read();
            System.out.print(c);
         }

         // reset back to marked position
         sr.reset();

         // read again the next six chars
         for (int i = 0; i < 6; i++) {
            char c = (char) sr.read();
            System.out.print(c);
         }

         // close the stream
         sr.close();

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

Output

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

Hello World World

Example - Reset to the beginning without calling mark()

The following example shows the usage of StringReader reset() method.

StringReaderDemo.java

package com.tutorialspoint;

import java.io.StringReader;

public class StringReaderDemo {
   public static void main(String[] args) throws Exception {
      StringReader reader = new StringReader("Hello");

      // Read first two characters
      System.out.print((char) reader.read());
      System.out.print((char) reader.read());

      // Reset to beginning
      reader.reset();

      // Read again from beginning
      int ch;
      System.out.print(" (after reset) ");
      while ((ch = reader.read()) != -1) {
         System.out.print((char) ch);
      }

      reader.close();
   }
}

Output

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

He (after reset) Hello

Explanation

  • Without calling mark(), reset() defaults to the beginning.

  • It first reads 'H' and 'e', then resets and reads from the beginning again.

Example - Using mark() and reset() together

The following example shows the usage of StringReader reset() method.

StringReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.StringReader;

public class StringReaderDemo {
   public static void main(String[] args) throws IOException {
      StringReader reader = new StringReader("abcdef");

      reader.read(); // Read 'a'
      reader.mark(100); // Mark after reading 'a'

      reader.read(); // 'b'
      reader.read(); // 'c'

      reader.reset(); // Back to position after 'a'

      // Read again after reset
      int ch;
      while ((ch = reader.read()) != -1) {
         System.out.print((char) ch);
      }

      reader.close();
   }
}

Output

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

Bcdef

Explanation

  • After reading 'a', we call mark().

  • Then we read 'b' and 'c', but reset() takes us back to just after 'a'.

  • The final output starts from 'b' and continues till the end.

java_io_stringreader.htm
Advertisements