Tech and Media Labs
This site uses cookies to improve the user experience.




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




Copyright  Jenkov Aps
Close TOC