Package com.sun.java.help.impl

# Class XmlReader

java.lang.Object
java.io.Reader
com.sun.java.help.impl.XmlReader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Readable`

public final class XmlReader extends Reader
This handles several XML-related tasks that normal java.io Readers don't support, inluding use of IETF standard encoding names and automatic detection of most XML encodings. The former is needed for interoperability; the latter is needed to conform with the XML spec. This class also optimizes reading some common encodings by providing low-overhead unsynchronized Reader support.

Note that the autodetection facility should be used only on data streams which have an unknown character encoding. For example, it should never be used on MIME text/xml entities.

Note that XML processors are only required to support UTF-8 and UTF-16 character encodings. Autodetection permits the underlying Java implementation to provide support for many other encodings, such as ISO-8859-5, Shift_JIS, EUC-JP, and ISO-2022-JP.

## Field Summary

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

`lock`

## Method Summary

Modifier and Type
Method
Description
`void`
`close()`
Closes the reader.
`static Reader`
`createReader(InputStream in)`
Constructs the reader from an input stream, autodetecting the encoding to use according to the heuristic specified in the XML 1.0 recommendation.
`static Reader`
`createReader(InputStream in, String encoding)`
Creates a reader supporting the given encoding, mapping from standard encoding names to ones that understood by Java where necessary.
`static Reader`
`createReader(URLConnection uc)`
Constructs the reader from a URLConnection.
`String`
`getEncoding()`
Returns the (non)standard name of the encoding in use
`void`
`mark(int value)`
Sets a mark allowing a limited number of characters to be "peeked", by reading and then resetting.
`boolean`
`markSupported()`
Returns true iff the reader supports mark/reset.
`int`
`read()`
Reads a single character.
`int`
`read(char[] buf, int off, int len)`
Reads the number of characters read into the buffer, or -1 on EOF.
`boolean`
`ready()`
Returns true iff input characters are known to be ready.
`void`
`reset()`
Resets the current position to the last marked position.
`long`
`skip(long value)`
Skips a specified number of characters.

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

`nullReader, read, read, transferTo`

### Methods inherited from class java.lang.Object

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

## Method Details

### createReader

public static Reader createReader(URLConnection uc) throws IOException
Constructs the reader from a URLConnection. Uses the encoding specified in the HTTP header or autodetects the encoding to use according to the heuristic specified in the XML 1.0 recommendation.

Parameters:
  `uc` - the URLConnection from which the reader is constructed
Throws:
  `IOException` - on error
  `UnsupportedEncodingException` - when the input stream is not in an encoding which is supported; this is a fatal XML error.

### createReader

public static Reader createReader(InputStream in) throws IOException
Constructs the reader from an input stream, autodetecting the encoding to use according to the heuristic specified in the XML 1.0 recommendation.

Parameters:
  `in` - the input stream from which the reader is constructed
Throws:
  `IOException` - on error
  `UnsupportedEncodingException` - when the input stream is not in an encoding which is supported; this is a fatal XML error.

### createReader

public static Reader createReader(InputStream in, String encoding) throws IOException
Creates a reader supporting the given encoding, mapping from standard encoding names to ones that understood by Java where necessary.

Parameters:
  `in` - the input stream from which the reader is constructed
  `encoding` - the IETF standard name of the encoding to use; if null, autodetection is used.
Throws:
  `IOException` - on error
  `UnsupportedEncodingException` - when the input stream is not in an encoding which is supported; this is a fatal XML error.

### getEncoding

public String getEncoding()
Returns the (non)standard name of the encoding in use

### read

public int read(char[] buf, int off, int len) throws IOException
Reads the number of characters read into the buffer, or -1 on EOF.

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

### read

public int read() throws IOException
Reads a single character.

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

### markSupported

public boolean markSupported()
Returns true iff the reader supports mark/reset.

Overrides:
  `markSupported` in class `Reader`

### mark

public void mark(int value) throws IOException
Sets a mark allowing a limited number of characters to be "peeked", by reading and then resetting.

Overrides:
  `mark` in class `Reader`
Parameters:
  `value` - how many characters may be "peeked".
Throws:
  `IOException`

### reset

public void reset() throws IOException
Resets the current position to the last marked position.

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

### skip

public long skip(long value) throws IOException
Skips a specified number of characters.

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

### ready

public boolean ready() throws IOException
Returns true iff input characters are known to be ready.

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

### close

public void close() throws IOException
Closes the reader.

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