[ Web Proxy ]
URL:
Viewing: https://www.tutorialspoint.com/java/io/java_io_reader.htm [Back]  [Original]

Java - Reader Class
Tutorials Courses Jobs Login
Selected Reading
Home Java/io Java - Reader Class

Java - Reader Class



Introduction

The Java Reader class is a abstract class for reading character streams.

Class declaration

Following is the declaration for Java.io.Reader class

public class Reader
   extends Object
      implements DataOutput, DataInput, Closeable

Field

Following are the fields for Java.io.Reader class

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

Class constructors

Sr.No. Constructor & Description
1

protected Reader()

This creates a new character-stream reader whose critical sections will synchronize on the reader itself.

2

protected Reader(Object lock)

This creates a new character-stream reader whose critical sections will synchronize on the given object.

Class methods

Sr.No. Method & Description
1 abstract 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.

4 int read()

This method reads a single character.

5 int read(char[] cbuf)

This method reads characters into an array.

6 abstract int read(char[] cbuf, int off, int len)

This method reads characters into a portion of an array.

7 int read(CharBuffer target)

This method attempts to read characters into the specified character buffer.

8 boolean ready()

This method tells whether this stream is ready to be read.

9 void reset()

This method resets the stream.

10 long skip(long n)

This method skips characters.

Methods inherited

This class inherits methods from the following classes

  • Java.io.Object

Example - Using close() Manually with StringReader

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

ReaderDemo.java

package com.tutorialspoint;

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

public class ReaderDemo {
   public static void main(String[] args) {
      String data = "This is a sample string.";
      StringReader reader = null;

      try {
         reader = new StringReader(data);

         int ch;
         while ((ch = reader.read()) != -1) {
            System.out.print((char) ch);
         }

      } catch (IOException e) {
         e.printStackTrace();
      } finally {
         if (reader != null) {
            reader.close();
            System.out.println("\nReader closed successfully.");
         }
      }
   }
}

Output

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

This is a sample string.
Reader closed successfully.

Explanation

  • Opens a file sample.txt for reading.

  • Reads characters one by one.

  • close() is called in the finally block to ensure it's always executed.

Example - Mark and Reset within the Limit

The following example shows the usage of Reader mark(int readAheadLimit) method.

ReaderDemo.java

package com.tutorialspoint;

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

public class ReaderDemo {
   public static void main(String[] args) {
      String data = "ABCDEFG";
      try (BufferedReader reader = new BufferedReader(new StringReader(data))) {

         System.out.print((char) reader.read()); // A
         reader.mark(3); // Mark after reading 'A'

         System.out.print((char) reader.read()); // B
         System.out.print((char) reader.read()); // C

         reader.reset(); // Go back to after 'A'

         System.out.print((char) reader.read()); // B (again)
         System.out.print((char) reader.read()); // C (again)
         System.out.print((char) reader.read()); // D

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

Output

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

ABCBCD

Explanation

  • We mark the position after reading 'A'.

  • After reading 'B' and 'C', we reset() to the marked point.

  • We re-read 'B' and 'C', and then continue.

Example - Using BufferedReader (Supports Mark)

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

ReaderDemo.java

package com.tutorialspoint;

import java.io.BufferedReader;
import java.io.StringReader;

public class ReaderDemo {
   public static void main(String[] args) {
      String data = "Hello World";
      BufferedReader reader = new BufferedReader(new StringReader(data));

      System.out.println("markSupported(): " + reader.markSupported());

      try {
         reader.mark(5); // This is safe
         System.out.println("Marked at start");

         System.out.print((char) reader.read()); // H
         System.out.print((char) reader.read()); // e

         reader.reset(); // Resets to 'H'
         System.out.print("\nAfter reset: ");
         System.out.print((char) reader.read()); // H again
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}

Output

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

markSupported(): true
Marked at start
He
After reset: H

Explanation

  • BufferedReader supports mark() and reset(), so markSupported() returns true.

  • We use mark() safely and reset to re-read characters.

Tutorix - AI Tutor [Tutorix - AI Tutor]
Print Page
Advertisements

Web Proxy Viewer  |  New URL  |  Original Page