Package org.mozilla.universalchardet
Class UnicodeBOMInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.mozilla.universalchardet.UnicodeBOMInputStream
-
- All Implemented Interfaces:
java.io.Closeable
,java.lang.AutoCloseable
public class UnicodeBOMInputStream extends java.io.InputStream
TheUnicodeBOMInputStream
class wraps anyInputStream
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 10646The 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 wrappedInputStream
object.- Version:
- 1.0
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
UnicodeBOMInputStream.BOM
Type safe enumeration class that describes the different types of Unicode BOMs.
-
Field Summary
Fields Modifier and Type Field Description private UnicodeBOMInputStream.BOM
bom
private java.io.PushbackInputStream
in
private boolean
skipped
-
Constructor Summary
Constructors Constructor Description UnicodeBOMInputStream(java.io.InputStream inputStream)
Constructs a newUnicodeBOMInputStream
that wraps the specifiedInputStream
.UnicodeBOMInputStream(java.io.InputStream inputStream, boolean skipIfFound)
Constructs a newUnicodeBOMInputStream
that wraps the specifiedInputStream
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
void
close()
UnicodeBOMInputStream.BOM
getBOM()
Returns theBOM
that was detected in the wrappedInputStream
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 theBOM
that was found in the wrappedInputStream
object.
-
-
-
Field Detail
-
in
private final java.io.PushbackInputStream in
-
bom
private final UnicodeBOMInputStream.BOM bom
-
skipped
private boolean skipped
-
-
Constructor Detail
-
UnicodeBOMInputStream
public UnicodeBOMInputStream(java.io.InputStream inputStream) throws java.io.IOException
Constructs a newUnicodeBOMInputStream
that wraps the specifiedInputStream
. By default skip BOM bytes- Parameters:
inputStream
- anInputStream
.- Throws:
java.lang.NullPointerException
- wheninputStream
isnull
.java.io.IOException
- on reading from the specifiedInputStream
when trying to detect the Unicode BOM.
-
UnicodeBOMInputStream
public UnicodeBOMInputStream(java.io.InputStream inputStream, boolean skipIfFound) throws java.io.IOException
Constructs a newUnicodeBOMInputStream
that wraps the specifiedInputStream
.- Parameters:
inputStream
- anInputStream
.skipIfFound
- to automatically skip BOM bytes if found- Throws:
java.lang.NullPointerException
- wheninputStream
isnull
.java.io.IOException
- on reading from the specifiedInputStream
when trying to detect the Unicode BOM.
-
-
Method Detail
-
getBOM
public final UnicodeBOMInputStream.BOM getBOM()
Returns theBOM
that was detected in the wrappedInputStream
object.- Returns:
- a
BOM
value.
-
skipBOM
public final UnicodeBOMInputStream skipBOM() throws java.io.IOException
Skips theBOM
that was found in the wrappedInputStream
object.- Returns:
- this
UnicodeBOMInputStream
. - Throws:
java.io.IOException
- when trying to skip the BOM from the wrappedInputStream
object.
-
read
public int read() throws java.io.IOException
- Specified by:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
read
public int read(byte[] b, int off, int len) throws java.io.IOException
- Overrides:
read
in classjava.io.InputStream
- Throws:
java.io.IOException
-
skip
public long skip(long n) throws java.io.IOException
- Overrides:
skip
in classjava.io.InputStream
- Throws:
java.io.IOException
-
available
public int available() throws java.io.IOException
- Overrides:
available
in classjava.io.InputStream
- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException
- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.io.Closeable
- Overrides:
close
in classjava.io.InputStream
- Throws:
java.io.IOException
-
mark
public void mark(int readlimit)
- Overrides:
mark
in classjava.io.InputStream
-
reset
public void reset() throws java.io.IOException
- Overrides:
reset
in classjava.io.InputStream
- Throws:
java.io.IOException
-
markSupported
public boolean markSupported()
- Overrides:
markSupported
in classjava.io.InputStream
-
-