Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.velocity.io
Class UnicodeInputStream

    java.lang.Object
      java.io.InputStream
          org.apache.velocity.io.UnicodeInputStream

public class UnicodeInputStream
extends InputStream

This is an input stream that is unicode BOM aware. This allows you to e.g. read Windows Notepad Unicode files as Velocity templates. It allows you to check the actual encoding of a file by calling `getEncodingFromStream()` on the input stream reader. This class is not thread safe! When more than one thread wants to use an instance of UnicodeInputStream, the caller must provide synchronization.

Since:
  1.5
Version:
  $Id: UnicodeInputStream.java 685685 2008-08-13 21:43:27Z nbubna $
Author:
  Aki Nieminen, Henning P. Schmiedehausen

Field Summary
`static org.apache.velocity.io.UnicodeInputStream.UnicodeBOM` | `UTF16BE_BOM` BOM Marker for UTF 16, big endian.
`static org.apache.velocity.io.UnicodeInputStream.UnicodeBOM` | `UTF16LE_BOM` BOM Marker for UTF 16, little endian.
`static org.apache.velocity.io.UnicodeInputStream.UnicodeBOM` | `UTF32BE_BOM` BOM Marker for UTF 32, big endian.
`static org.apache.velocity.io.UnicodeInputStream.UnicodeBOM` | `UTF32LE_BOM` BOM Marker for UTF 32, little endian.
`static org.apache.velocity.io.UnicodeInputStream.UnicodeBOM` | `UTF8_BOM` BOM Marker for UTF 8.

Constructor Summary
`UnicodeInputStream(InputStream inputStream)` Creates a new UnicodeInputStream object.
`UnicodeInputStream(InputStream inputStream, boolean skipBOM)` Creates a new UnicodeInputStream object.

Method Summary
`int` | `available()`
`void` | `close()`
`String` | `getEncodingFromStream()` Read encoding based on BOM.
`boolean` | `isSkipBOM()` Returns true if the input stream discards the BOM.
`void` | `mark(int readlimit)`
`boolean` | `markSupported()`
`int` | `read()`
`int` | `read(byte[] b)`
`int` | `read(byte[] b, int off, int len)`
`protected String` | `readEncoding()` This method gets the encoding from the stream contents if a BOM exists.
`void` | `reset()`
`long` | `skip(long n)`

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

Field Detail

### UTF8_BOM

    public static final org.apache.velocity.io.UnicodeInputStream.UnicodeBOM UTF8_BOM

  BOM Marker for UTF 8. See http://www.unicode.org/unicode/faq/utf_bom.html

### UTF16LE_BOM

    public static final org.apache.velocity.io.UnicodeInputStream.UnicodeBOM UTF16LE_BOM

  BOM Marker for UTF 16, little endian. See http://www.unicode.org/unicode/faq/utf_bom.html

### UTF16BE_BOM

    public static final org.apache.velocity.io.UnicodeInputStream.UnicodeBOM UTF16BE_BOM

  BOM Marker for UTF 16, big endian. See http://www.unicode.org/unicode/faq/utf_bom.html

### UTF32LE_BOM

    public static final org.apache.velocity.io.UnicodeInputStream.UnicodeBOM UTF32LE_BOM

  BOM Marker for UTF 32, little endian. See http://www.unicode.org/unicode/faq/utf_bom.html TODO: Does Java actually support this?

### UTF32BE_BOM

    public static final org.apache.velocity.io.UnicodeInputStream.UnicodeBOM UTF32BE_BOM

  BOM Marker for UTF 32, big endian. See http://www.unicode.org/unicode/faq/utf_bom.html TODO: Does Java actually support this?

Constructor Detail

### UnicodeInputStream

    public UnicodeInputStream(InputStream inputStream)
                       throws IllegalStateException,
                              IOException

  Creates a new UnicodeInputStream object. Skips a BOM which defines the file encoding.

Parameters:
  `inputStream` - The input stream to use for reading.

### UnicodeInputStream

    public UnicodeInputStream(InputStream inputStream,
                              boolean skipBOM)
                       throws IllegalStateException,
                              IOException

  Creates a new UnicodeInputStream object.

Parameters:
  `inputStream` - The input stream to use for reading.
  `skipBOM` - If this is set to true, a BOM read from the stream is discarded. This parameter should normally be true.

Method Detail

### isSkipBOM

    public boolean isSkipBOM()

  Returns true if the input stream discards the BOM.

  Returns:
    True if the input stream discards the BOM.

### getEncodingFromStream

    public String getEncodingFromStream()

  Read encoding based on BOM.

  Returns:
    The encoding based on the BOM.
  Throws:
    `IllegalStateException` - When a problem reading the BOM occured.

### readEncoding

    protected String readEncoding()
                           throws IOException

  This method gets the encoding from the stream contents if a BOM exists. If no BOM exists, the encoding is undefined.

  Returns:
    The encoding of this streams contents as decided by the BOM or null if no BOM was found.
  Throws:
    `IOException`

### close

    public void close()
               throws IOException

  Throws:
    `IOException`
  See Also:
    `InputStream.close()`

### available

    public int available()
                  throws IOException

  Throws:
    `IOException`
  See Also:
    `InputStream.available()`

### mark

    public void mark(int readlimit)

  See Also:
    `InputStream.mark(int)`

### markSupported

    public boolean markSupported()

  See Also:
    `InputStream.markSupported()`

### read

    public int read()
             throws IOException

  Throws:
    `IOException`
  See Also:
    `InputStream.read()`

### read

    public int read(byte[] b)
             throws IOException

  Throws:
    `IOException`
  See Also:
    `InputStream.read(byte[])`

### read

    public int read(byte[] b,
                    int off,
                    int len)
             throws IOException

  Throws:
    `IOException`
  See Also:
    `InputStream.read(byte[], int, int)`

### reset

    public void reset()
               throws IOException

  Throws:
    `IOException`
  See Also:
    `InputStream.reset()`

### skip

    public long skip(long n)
              throws IOException

  Throws:
    `IOException`
  See Also:
    `InputStream.skip(long)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2000-2010 Apache Software Foundation. All Rights Reserved.