public class UnicodeBOMInputStream
extends java.io.InputStream
UnicodeBOMInputStream
class wraps any
InputStream
and detects the presence of any Unicode BOM
(Byte Order Mark) at its beginning, as defined by
RFC 3629 - UTF-8, a transformation format of ISO 10646
The Unicode FAQ defines 5 types of BOMs:
00 00 FE FF = UTF-32, big-endian
FF FE 00 00 = UTF-32, little-endian
FE FF = UTF-16, big-endian
FF FE = UTF-16, little-endian
EF BB BF = UTF-8
Use the getBOM()
method to know whether a BOM has been detected
or not.
Use the skipBOM()
method to remove the detected BOM from the
wrapped InputStream
object.
Modifier and Type | Class and Description |
---|---|
static class |
UnicodeBOMInputStream.BOM
Type safe enumeration class that describes the different types of Unicode
BOMs.
|
Modifier and Type | Field and Description |
---|---|
private UnicodeBOMInputStream.BOM |
bom |
private java.io.PushbackInputStream |
in |
private boolean |
skipped |
Constructor and Description |
---|
UnicodeBOMInputStream(java.io.InputStream inputStream)
Constructs a new
UnicodeBOMInputStream that wraps the
specified InputStream . |
Modifier and Type | Method and Description |
---|---|
int |
available() |
void |
close() |
UnicodeBOMInputStream.BOM |
getBOM()
Returns the
BOM that was detected in the wrapped
InputStream object. |
void |
mark(int readlimit) |
boolean |
markSupported() |
int |
read() |
int |
read(byte[] b) |
int |
read(byte[] b,
int off,
int len) |
void |
reset() |
long |
skip(long n) |
UnicodeBOMInputStream |
skipBOM()
Skips the
BOM that was found in the wrapped
InputStream object. |
private final java.io.PushbackInputStream in
private final UnicodeBOMInputStream.BOM bom
private boolean skipped
public UnicodeBOMInputStream(java.io.InputStream inputStream) throws java.lang.NullPointerException, java.io.IOException
UnicodeBOMInputStream
that wraps the
specified InputStream
.inputStream
- an InputStream
.java.lang.NullPointerException
- when inputStream
is
null
.java.io.IOException
- on reading from the specified InputStream
when trying to detect the Unicode BOM.public final UnicodeBOMInputStream.BOM getBOM()
BOM
that was detected in the wrapped
InputStream
object.BOM
value.public final UnicodeBOMInputStream skipBOM() throws java.io.IOException
BOM
that was found in the wrapped
InputStream
object.UnicodeBOMInputStream
.java.io.IOException
- when trying to skip the BOM from the wrapped
InputStream
object.public int read() throws java.io.IOException
read
in class java.io.InputStream
java.io.IOException
public int read(byte[] b) throws java.io.IOException, java.lang.NullPointerException
read
in class java.io.InputStream
java.io.IOException
java.lang.NullPointerException
public int read(byte[] b, int off, int len) throws java.io.IOException, java.lang.NullPointerException
read
in class java.io.InputStream
java.io.IOException
java.lang.NullPointerException
public long skip(long n) throws java.io.IOException
skip
in class java.io.InputStream
java.io.IOException
public int available() throws java.io.IOException
available
in class java.io.InputStream
java.io.IOException
public void close() throws java.io.IOException
close
in interface java.io.Closeable
close
in interface java.lang.AutoCloseable
close
in class java.io.InputStream
java.io.IOException
public void mark(int readlimit)
mark
in class java.io.InputStream
public void reset() throws java.io.IOException
reset
in class java.io.InputStream
java.io.IOException
public boolean markSupported()
markSupported
in class java.io.InputStream
Copyright 2004-2015 Wandora Team