## com.fasterxml.jackson.core.io
Class UTF32Reader

    java.lang.Object
      java.io.Reader
          com.fasterxml.jackson.core.io.UTF32Reader

All Implemented Interfaces:
  Closeable, Readable

    public final class UTF32Reader

extends Reader

Since JDK does not come with UTF-32/UCS-4, let's implement a simple decoder to use.

Field Summary
`protected byte[]` `_buffer`
`protected IOContext` `_context`
`protected InputStream` `_in`
`protected int` `_length`
`protected int` `_ptr`
`protected char[]` `_tmpBuf`
`protected static int` `LAST_VALID_UNICODE_CHAR` JSON actually limits available Unicode range in the high end to the same as xml (to basically limit UTF-8 max byte sequence length to 4)
`protected static char` `NULL_BYTE`
`protected static char` `NULL_CHAR`

Fields inherited from class java.io.Reader
`lock`

Constructor Summary
`UTF32Reader(IOContext ctxt, InputStream in, byte[] buf, int ptr, int len, boolean isBigEndian)`

Method Summary
`void` `close()`
`void` `freeBuffers()` This method should be called along with (or instead of) normal close.
`int` `read()` Although this method is implemented by the base class, AND it should never be called by main code, let's still implement it bit more efficiently just in case
`int` `read(char[] cbuf, int start, int len)`
`protected void` `reportBounds(char[] cbuf, int start, int len)`
`protected void` `reportStrangeStream()`

Methods inherited from class java.io.Reader
`mark, markSupported, read, read, ready, reset, skip`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### LAST_VALID_UNICODE_CHAR

    protected static final int LAST_VALID_UNICODE_CHAR

  JSON actually limits available Unicode range in the high end to the same as xml (to basically limit UTF-8 max byte sequence length to 4)

  See Also:
    Constant Field Values

### NULL_CHAR

    protected static final char NULL_CHAR

See Also:
  Constant Field Values

### NULL_BYTE

    protected static final char NULL_BYTE

See Also:
  Constant Field Values

### _context

    protected final IOContext _context

### _in

    protected InputStream _in

### _buffer

    protected byte[] _buffer

### _ptr

    protected int _ptr

### _length

    protected int _length

### _tmpBuf

    protected char[] _tmpBuf

Constructor Detail

### UTF32Reader

    public UTF32Reader(IOContext ctxt,
                       InputStream in,
                       byte[] buf,
                       int ptr,
                       int len,
                       boolean isBigEndian)

Method Detail

### read

    public int read(char[] cbuf,
                    int start,
                    int len)
             throws IOException

  Specified by:
    `read` in class `Reader`
  Throws:
    `IOException`

### close

    public void close()
               throws IOException

  Specified by:
    `close` in interface `Closeable`
  Specified by:
    `close` in class `Reader`
  Throws:
    `IOException`

### read

    public int read()
             throws IOException

  Although this method is implemented by the base class, AND it should never be called by main code, let's still implement it bit more efficiently just in case

  Overrides:
    `read` in class `Reader`
  Throws:
    `IOException`

### freeBuffers

    public final void freeBuffers()

  This method should be called along with (or instead of) normal close. After calling this method, no further reads should be tried. Method will try to recycle read buffers (if any).

### reportBounds

    protected void reportBounds(char[] cbuf,
                                int start,
                                int len)
                         throws IOException

  Throws:
    `IOException`

### reportStrangeStream

    protected void reportStrangeStream()
                                throws IOException

  Throws:
    `IOException`

Copyright © 2012 FasterXML. All Rights Reserved.