public class BOMInputStream extends ProxyInputStream
ByteOrderMark
as its first bytes.
This class detects these bytes and, if required, can automatically skip them and return the subsequent byte as the
first byte in the stream.
The ByteOrderMark
implementation has the following pre-defined BOMs:
ByteOrderMark.UTF_8
ByteOrderMark.UTF_16LE
ByteOrderMark.UTF_16BE
ByteOrderMark.UTF_32LE
ByteOrderMark.UTF_32BE
BOMInputStream bomIn = new BOMInputStream(in); if (bomIn.hasBOM()) { // has a UTF-8 BOM }
boolean include = true; BOMInputStream bomIn = new BOMInputStream(in, include); if (bomIn.hasBOM()) { // has a UTF-8 BOM }
BOMInputStream bomIn = new BOMInputStream(in, ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE, ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE ); if (bomIn.hasBOM() == false) { // No BOM found } else if (bomIn.hasBOM(ByteOrderMark.UTF_16LE)) { // has a UTF-16LE BOM } else if (bomIn.hasBOM(ByteOrderMark.UTF_16BE)) { // has a UTF-16BE BOM } else if (bomIn.hasBOM(ByteOrderMark.UTF_32LE)) { // has a UTF-32LE BOM } else if (bomIn.hasBOM(ByteOrderMark.UTF_32BE)) { // has a UTF-32BE BOM }
ByteOrderMark
,
Wikipedia - Byte Order Markin
Constructor and Description |
---|
BOMInputStream(InputStream delegate)
Constructs a new BOM InputStream that excludes a
ByteOrderMark.UTF_8 BOM. |
BOMInputStream(InputStream delegate,
boolean include)
Constructs a new BOM InputStream that detects a a
ByteOrderMark.UTF_8 and optionally includes it. |
BOMInputStream(InputStream delegate,
boolean include,
ByteOrderMark... boms)
Constructs a new BOM InputStream that detects the specified BOMs and optionally includes them.
|
BOMInputStream(InputStream delegate,
ByteOrderMark... boms)
Constructs a new BOM InputStream that excludes the specified BOMs.
|
Modifier and Type | Method and Description |
---|---|
ByteOrderMark |
getBOM()
Return the BOM (Byte Order Mark).
|
String |
getBOMCharsetName()
Return the BOM charset Name -
ByteOrderMark.getCharsetName() . |
boolean |
hasBOM()
Indicates whether the stream contains one of the specified BOMs.
|
boolean |
hasBOM(ByteOrderMark bom)
Indicates whether the stream contains the specified BOM.
|
void |
mark(int readlimit)
Invokes the delegate's
mark(int) method. |
int |
read()
Invokes the delegate's
read() method, detecting and optionally skipping BOM. |
int |
read(byte[] buf)
Invokes the delegate's
read(byte[]) method, detecting and optionally skipping BOM. |
int |
read(byte[] buf,
int off,
int len)
Invokes the delegate's
read(byte[], int, int) method, detecting and optionally skipping BOM. |
void |
reset()
Invokes the delegate's
reset() method. |
long |
skip(long n)
Invokes the delegate's
skip(long) method, detecting and optionally skipping BOM. |
afterRead, available, beforeRead, close, handleIOException, markSupported
public BOMInputStream(InputStream delegate)
ByteOrderMark.UTF_8
BOM.delegate
- the InputStream to delegate topublic BOMInputStream(InputStream delegate, boolean include)
ByteOrderMark.UTF_8
and optionally includes it.delegate
- the InputStream to delegate toinclude
- true to include the UTF-8 BOM or false to exclude itpublic BOMInputStream(InputStream delegate, ByteOrderMark... boms)
delegate
- the InputStream to delegate toboms
- The BOMs to detect and excludepublic BOMInputStream(InputStream delegate, boolean include, ByteOrderMark... boms)
delegate
- the InputStream to delegate toinclude
- true to include the specified BOMs or false to exclude themboms
- The BOMs to detect and optionally excludepublic boolean hasBOM() throws IOException
IOException
- if an error reading the first bytes of the stream occurspublic boolean hasBOM(ByteOrderMark bom) throws IOException
bom
- The BOM to check forIllegalArgumentException
- if the BOM is not one the stream is configured to detectIOException
- if an error reading the first bytes of the stream occurspublic ByteOrderMark getBOM() throws IOException
IOException
- if an error reading the first bytes of the stream occurspublic String getBOMCharsetName() throws IOException
ByteOrderMark.getCharsetName()
.IOException
- if an error reading the first bytes of the stream occurspublic int read() throws IOException
read()
method, detecting and optionally skipping BOM.read
in class ProxyInputStream
IOException
- if an I/O error occurspublic int read(byte[] buf, int off, int len) throws IOException
read(byte[], int, int)
method, detecting and optionally skipping BOM.read
in class ProxyInputStream
buf
- the buffer to read the bytes intooff
- The start offsetlen
- The number of bytes to read (excluding BOM)IOException
- if an I/O error occurspublic int read(byte[] buf) throws IOException
read(byte[])
method, detecting and optionally skipping BOM.read
in class ProxyInputStream
buf
- the buffer to read the bytes intoIOException
- if an I/O error occurspublic void mark(int readlimit)
mark(int)
method.mark
in class ProxyInputStream
readlimit
- read ahead limitpublic void reset() throws IOException
reset()
method.reset
in class ProxyInputStream
IOException
- if an I/O error occurspublic long skip(long n) throws IOException
skip(long)
method, detecting and optionally skipping BOM.skip
in class ProxyInputStream
n
- the number of bytes to skipIOException
- if an I/O error occursCopyright © 2002–2020 The Apache Software Foundation. All rights reserved.