Java - StringReader class



Introduction

The Java StringReader class is a character stream whose source is a string.

Class declaration

Following is the declaration for Java.io.StringReader class −

public class StringReader
   extends Reader

Field

Following are the fields for Java.io.StringReader class −

  • protected Object lock − This is the object used to synchronize operations on this stream.

Class constructors

Sr.No. Constructor & Description
1

StringReader(String s)

This creates a new string reader.

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.

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 to the most recent mark, or to the beginning of the string if it has never been marked.

8 long skip(long ns)

This method skips the specified number of characters in the stream.

Methods inherited

This class inherits methods from the following classes −

  • Java.io.Reader
  • Java.io.Object

Example - Properly closing a StringReader

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

StringReaderDemo.java

package com.tutorialspoint;

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

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

      int data = reader.read();
      System.out.println("First character: " + (char) data);

      reader.close(); // closing the reader
      System.out.println("Reader closed.");
   }
}

Output

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

First character: H
Reader closed.

Explanation

  • The reader reads one character successfully.

  • Then it's closed using close().

  • No error occurs because we don't attempt to read after closing.

Example - Basic use of mark() and reset()

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

      System.out.print((char) reader.read()); // a
      reader.mark(3); // mark at position after 'a'

      System.out.print((char) reader.read()); // b
      System.out.print((char) reader.read()); // c

      reader.reset(); // go back to mark (before 'b')

      System.out.print((char) reader.read()); // b
      System.out.print((char) reader.read()); // c

      reader.close();
   }
}

Output

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

abcbc

Explanation

  • You read 'a', then mark the position.

  • Then read 'b' and 'c'.

  • After reset(), you go back to the position after 'a' and read 'b' and 'c' again.

Example - Checking if mark() is supported

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

StringReaderDemo.java

package com.tutorialspoint;

import java.io.StringReader;

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

      System.out.println("Mark supported? " + reader.markSupported());

      reader.close();
   }
}

Output

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

Mark supported? true

Explanation

  • This example simply checks if the StringReader supports marking (it does).

  • You can safely use mark() and reset() on this reader.

Advertisements
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy