Class BomInput
java.lang.Object
java.io.InputStream
com.univocity.parsers.common.input.BomInput
- All Implemented Interfaces:
Closeable
,AutoCloseable
A wrapper for an
InputStream
that attempts to detect a Byte Order Mark (BOM) in the input
and derive the character encoding that should be used to decode the incoming content.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
Internal notification exception used to re-wrap the originalInputStream
into aReader
. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int[]
private int
private int
private String
private IOException
private final InputStream
static final byte[]
static final byte[]
static final byte[]
static final byte[]
static final byte[]
-
Constructor Summary
ConstructorsConstructorDescriptionBomInput
(InputStream input) Wraps anInputStream
and reads the first bytes found on it to attempt to read a BOM. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
final Charset
Returns the detectedCharset
determined by the Byte Order Mark (BOM) available in the input provided in the constructor of this class.final String
Returns the detected encoding name determined by the Byte Order Mark (BOM) available in the input provided in the constructor of this class.final boolean
Returns a flag indicating whether or not all bytes read from the wrapped input stream have been consumed.private int
next()
final int
read()
private void
setEncoding
(String encoding) Methods inherited from class java.io.InputStream
available, mark, markSupported, nullInputStream, read, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
-
Field Details
-
UTF_8_BOM
public static final byte[] UTF_8_BOM -
UTF_16BE_BOM
public static final byte[] UTF_16BE_BOM -
UTF_16LE_BOM
public static final byte[] UTF_16LE_BOM -
UTF_32BE_BOM
public static final byte[] UTF_32BE_BOM -
UTF_32LE_BOM
public static final byte[] UTF_32LE_BOM -
bytesRead
private int bytesRead -
bytes
private int[] bytes -
encoding
-
consumed
private int consumed -
input
-
exception
-
-
Constructor Details
-
BomInput
Wraps anInputStream
and reads the first bytes found on it to attempt to read a BOM.- Parameters:
input
- the input whose first bytes should be analyzed.
-
-
Method Details
-
setEncoding
-
next
- Throws:
IOException
-
read
- Specified by:
read
in classInputStream
- Throws:
IOException
-
hasBytesStored
public final boolean hasBytesStored()Returns a flag indicating whether or not all bytes read from the wrapped input stream have been consumed. This allows client code to determine if the original input stream can be used directly and safely, or if thisBomInput
wrapper class should be used instead. If there are stored bytes that need to be consumed before the wrapped input stream is consumed again, this method will returntrue
.- Returns:
false
if there are no bytes stored and the original input stream can be used directly. If this wrapper needs to be used to return stored bytes before, thentrue
will be returned.
-
getCharset
Returns the detectedCharset
determined by the Byte Order Mark (BOM) available in the input provided in the constructor of this class. If no BOM was detected, this method will returnnull
.- Returns:
- the detected
Charset
ornull
if a BOM could not be matched.
-
getEncoding
Returns the detected encoding name determined by the Byte Order Mark (BOM) available in the input provided in the constructor of this class. If no BOM was detected, this method will returnnull
.- Returns:
- the detected encoding name or
null
if a BOM could not be matched.
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classInputStream
- Throws:
IOException
-