Java IO: CharArrayReader

Jakob Jenkov
Last update: 2015-09-08

The Java CharArrayReader class (java.io.CharArrayReader) enables you to read the contents of a char array as a character stream.

The Java CharArrayReader is handy when you have data in a char array, but need to pass that data to some component which can only read from a Reader (or a Reader subclass). Simply wrap the char array in a CharArrayReader and pass it to that component.

CharArrayReader Example

Here is a simple Java CharArrayReader example:

char[] chars = "123".toCharArray();

CharArrayReader charArrayReader =
    new CharArrayReader(chars);

int data = charArrayReader.read();
while(data != -1) {
  //do something with data

  data = charArrayReader.read();
}

charArrayReader.close();

This example first creates a char array from a Java string. Second, the example creates a CharArrayReader instance, passing the char array as parameter to the CharArrayReader constructor. Third, the example reads the chars one by one from the CharArrayReader, and finally the CharArrayReader is closed.

Note: The proper exception handling has been skipped here for the sake of clarity. To learn more about correct exception handling, go to Java IO Exception Handling.

Creating a CharArrayReader From Part of a char Array

It is possible to create a Java CharArrayReader from just part of a char array. Here is an example showing how to create a CharArrayReader that reads only part of a char array:

char[] chars = "0123456789".toCharArray();

int offset = 2;
int length = 6;

CharArrayReader charArrayReader =
    new CharArrayReader(chars, offset, length);

This example creates a CharArrayReader which only reads from the char with index 2 and 6 char elements forward in the char array.

Closing a CharArrayReader

Closing a CharArrayReader can be done using the close() method like this:

charArrayReader.close();

Or you can close the CharArrayReader using the Java 7 try-with-resources construct. Here is how that looks:

try(CharArrayReader charArrayReader =
    new CharArrayReader(chars, offset, length)){

    int data = charArrayReader.read();
    while(data != -1) {
        //do something with data
        data = charArrayReader.read();
    }
}

Notice that there is no explicit close() call on the CharArrayReader. The try block takes care of that.

However, since the CharArrayReader is not using any underlying system resources like files or network sockets, closing the CharArrayReader is not crucial.

Jakob Jenkov

Featured Videos

Java ConcurrentMap + ConcurrentHashMap

Java Generics

Java ForkJoinPool

P2P Networks Introduction

















Close TOC
All Tutorial Trails
All Trails
Table of contents (TOC) for this tutorial trail
Trail TOC
Table of contents (TOC) for this tutorial
Page TOC
Previous tutorial in this tutorial trail
Previous
Next tutorial in this tutorial trail
Next