# Class CharArrayReader

java.lang.Object
java.io.Reader
com.codename1.io.CharArrayReader

All Implemented Interfaces:
  `java.io.Closeable, AutoCloseable, java.lang.Readable`

public class CharArrayReader extends java.io.Reader

A specialized `Reader` for reading the contents of a char array.

##### See also

- CharArrayWriter

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected char[]`
  `buf`
  The buffer for characters.
  `protected int`
  `count`
  The ending index of the buffer.
  `protected int`
  `markedPos`
  The current mark position.
  `protected int`
  `pos`
  The current buffer position.

  ### Fields inherited from class java.io.Reader

  `lock`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CharArrayReader(char[] buf)`
  Constructs a CharArrayReader on the char array `buf`.
  `CharArrayReader(char[] buf, int offset, int length)`
  Constructs a CharArrayReader on the char array `buf`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `close()`
  This method closes this CharArrayReader.
  `void`
  `mark(int readLimit)`
  Sets a mark position in this reader.
  `boolean`
  `markSupported()`
  Indicates whether this reader supports the `mark()` and `reset()` methods.
  `int`
  `read()`
  Reads a single character from this reader and returns it as an integer with the two higher-order bytes set to 0.
  `int`
  `read(char[] buffer, int offset, int len)`
  Reads at most `count` characters from this CharArrayReader and stores them at `offset` in the character array `buf`.
  `boolean`
  `ready()`
  Indicates whether this reader is ready to be read without blocking.
  `void`
  `reset()`
  Resets this reader's position to the last `mark()` location.
  `long`
  `skip(long n)`
  Skips `count` number of characters in this reader.

  ### Methods inherited from class java.io.Reader

  `read, read`

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### buf

    protected char[] buf
    The buffer for characters.

  - ### pos

    protected int pos
    The current buffer position.

  - ### markedPos

    protected int markedPos
    The current mark position.

  - ### count

    protected int count
    The ending index of the buffer.

- ## Constructor Details

  - ### CharArrayReader

    public CharArrayReader(char[] buf)

    Constructs a CharArrayReader on the char array `buf`. The size of the reader is set to the length of the buffer and the object to read from is set to `buf`.

    ###### Parameters

    - `buf`: the char array from which to read.

  - ### CharArrayReader

    public CharArrayReader(char[] buf, int offset, int length)

    Constructs a CharArrayReader on the char array `buf`. The size of the reader is set to `length` and the start position from which to read the buffer is set to `offset`.

    ###### Parameters

    - `buf`: the char array from which to read.

    - `offset`: the index of the first character in `buf` to read.

    - `length`: the number of characters that can be read from `buf`.

    ###### Throws

    - `IllegalArgumentException`: @throws IllegalArgumentException if `offset < 0` or `length < 0`, or if `offset` is greater than the size of `buf` .

- ## Method Details

  - ### close

    public void close()
    This method closes this CharArrayReader. Once it is closed, you can no longer read from it. Only the first invocation of this method has any effect.
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `java.io.Closeable`
    Specified by:
      `close` in class `java.io.Reader`

  - ### mark

    public void mark(int readLimit) throws java.io.IOException

    Sets a mark position in this reader. The parameter `readLimit` is ignored for CharArrayReaders. Calling `reset()` will reposition the reader back to the marked position provided the mark has not been invalidated.

    ###### Parameters

    - `readLimit`: ignored for CharArrayReaders.

    ###### Throws

    - `IOException`: if this reader is closed.
    Overrides:
      `mark` in class `java.io.Reader`
    Throws:
      `java.io.IOException`

  - ### markSupported

    public boolean markSupported()

    Indicates whether this reader supports the `mark()` and `reset()` methods.

    ###### Returns

    `true` for CharArrayReader.

    ###### See also

    - #mark(int)

    - #reset()

    Overrides:
      `markSupported` in class `java.io.Reader`

  - ### read

    public int read() throws java.io.IOException

    Reads a single character from this reader and returns it as an integer with the two higher-order bytes set to 0. Returns -1 if no more characters are available from this reader.

    ###### Returns

    Overrides:
      `read` in class `java.io.Reader`
    Returns:

      the character read as an int or -1 if the end of the reader has been reached.

      ###### Throws

      - `IOException`: if this reader is closed.
    Throws:
      `java.io.IOException`

  - ### read

    public int read(char[] buffer, int offset, int len) throws java.io.IOException

    Reads at most `count` characters from this CharArrayReader and stores them at `offset` in the character array `buf`. Returns the number of characters actually read or -1 if the end of reader was encountered.

    ###### Parameters

    - `buffer`: the character array to store the characters read.

    - `offset`: @param offset the initial position in `buffer` to store the characters read from this reader.

    - `len`: the maximum number of characters to read.

    ###### Returns

    Specified by:
      `read` in class `java.io.Reader`
    Returns:

      number of characters read or -1 if the end of the reader has been reached.

      ###### Throws

      - `IndexOutOfBoundsException`: @throws IndexOutOfBoundsException if `offset < 0` or `len < 0`, or if `offset + len` is bigger than the size of `buffer`.

      - `IOException`: if this reader is closed.

    Throws:
      `java.io.IOException`

  - ### ready

    public boolean ready() throws java.io.IOException

    Indicates whether this reader is ready to be read without blocking. Returns `true` if the next `read` will not block. Returns `false` if this reader may or may not block when `read` is called. The implementation in CharArrayReader always returns `true` even when it has been closed.

    ###### Returns

    Overrides:
      `ready` in class `java.io.Reader`
    Returns:

      `true` if this reader will not block when `read` is called, `false` if unknown or blocking will occur.

      ###### Throws

      - `IOException`: if this reader is closed.
    Throws:
      `java.io.IOException`

  - ### reset

    public void reset() throws java.io.IOException

    Resets this reader's position to the last `mark()` location. Invocations of `read()` and `skip()` will occur from this new location. If this reader has not been marked, it is reset to the beginning of the string.

    ###### Throws

    - `IOException`: if this reader is closed.
    Overrides:
      `reset` in class `java.io.Reader`
    Throws:
      `java.io.IOException`

  - ### skip

    public long skip(long n) throws java.io.IOException

    Skips `count` number of characters in this reader. Subsequent `read()`s will not return these characters unless `reset()` is used. This method does nothing and returns 0 if `n` is negative.

    ###### Parameters

    - `n`: the number of characters to skip.

    ###### Returns

    the number of characters actually skipped.

    ###### Throws

    - `IOException`: if this reader is closed.
    Overrides:
      `skip` in class `java.io.Reader`
    Throws:
      `java.io.IOException`