Package org.apache.commons.io

# Class ByteOrderMark

java.lang.Object
org.apache.commons.io.ByteOrderMark

All Implemented Interfaces:
  `Serializable`

public class ByteOrderMark extends Object implements Serializable
Byte Order Mark (BOM) representation. See `BOMInputStream`.

We define the follow BOM constants:

- `UTF_16BE`
- `UTF_16LE`
- `UTF_32BE`
- `UTF_32LE`
- `UTF_8`

## Deprecating Serialization

Serialization is deprecated and will be removed in 3.0.

Since:
  2.0
See Also:
  - `BOMInputStream`
  - Wikipedia: Byte Order Mark
  - W3C: Autodetection of Character Encodings (Non-Normative)
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final ByteOrderMark`
  `UTF_16BE`
  UTF-16BE BOM (Big-Endian).
  `static final ByteOrderMark`
  `UTF_16LE`
  UTF-16LE BOM (Little-Endian).
  `static final ByteOrderMark`
  `UTF_32BE`
  UTF-32BE BOM (Big-Endian).
  `static final ByteOrderMark`
  `UTF_32LE`
  UTF-32LE BOM (Little-Endian).
  `static final ByteOrderMark`
  `UTF_8`
  UTF-8 BOM.
  `static final char`
  `UTF_BOM`
  Unicode BOM character; external form depends on the encoding.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ByteOrderMark(String charsetName, int... bytes)`
  Constructs a new instance.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object obj)`
  Indicates if this instance's bytes equals another.
  `int`
  `get(int pos)`
  Gets the byte at the specified position.
  `byte[]`
  `getBytes()`
  Gets a copy of the BOM's bytes.
  `String`
  `getCharsetName()`
  Gets the name of the `Charset` the BOM represents.
  `int`
  `hashCode()`
  Computes the hash code for this BOM.
  `int`
  `length()`
  Gets the length of the BOM's bytes.
  `boolean`
  `matches(int[] test)`
  Tests whether the given array starts with the bytes for this BOM.
  `String`
  `toString()`
  Converts this instance to a String representation of the BOM.

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### UTF_8

    public static final ByteOrderMark UTF_8
    UTF-8 BOM.

    This BOM is:

         0xEF 0xBB 0xBF

  - ### UTF_16BE

    public static final ByteOrderMark UTF_16BE
    UTF-16BE BOM (Big-Endian).

    This BOM is:

         0xFE 0xFF

  - ### UTF_16LE

    public static final ByteOrderMark UTF_16LE
    UTF-16LE BOM (Little-Endian).

    This BOM is:

         0xFF 0xFE

  - ### UTF_32BE

    public static final ByteOrderMark UTF_32BE
    UTF-32BE BOM (Big-Endian).

    This BOM is:

         0x00 0x00 0xFE 0xFF

    Since:
      2.2

  - ### UTF_32LE

    public static final ByteOrderMark UTF_32LE
    UTF-32LE BOM (Little-Endian).

    This BOM is:

         0xFF 0xFE 0x00 0x00

    Since:
      2.2

  - ### UTF_BOM

    public static final char UTF_BOM
    Unicode BOM character; external form depends on the encoding.
    Since:
      2.5
    See Also:
      - Byte Order Mark (BOM) FAQ
      - Constant Field Values

- ## Constructor Details

  - ### ByteOrderMark

    public ByteOrderMark(String charsetName, int... bytes)
    Constructs a new instance.
    Parameters:
      `charsetName` - The name of the charset the BOM represents
      `bytes` - The BOM's bytes
    Throws:
      `IllegalArgumentException` - if the charsetName is zero length
      `IllegalArgumentException` - if the bytes are zero length

- ## Method Details

  - ### equals

    public boolean equals(Object obj)
    Indicates if this instance's bytes equals another.
    Overrides:
      `equals` in class `Object`
    Parameters:
      `obj` - The object to compare to
    Returns:
      true if the bom's bytes are equal, otherwise false

  - ### get

    public int get(int pos)
    Gets the byte at the specified position.
    Parameters:
      `pos` - The position
    Returns:
      The specified byte

  - ### getBytes

    public byte[] getBytes()
    Gets a copy of the BOM's bytes.
    Returns:
      a copy of the BOM's bytes

  - ### getCharsetName

    public String getCharsetName()
    Gets the name of the `Charset` the BOM represents.
    Returns:
      the character set name

  - ### hashCode

    public int hashCode()
    Computes the hash code for this BOM.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      the hash code for this BOM.
    See Also:
      - `Object.hashCode()`

  - ### length

    public int length()
    Gets the length of the BOM's bytes.
    Returns:
      the length of the BOM's bytes

  - ### matches

    public boolean matches(int[] test)
    Tests whether the given array starts with the bytes for this BOM.
    Parameters:
      `test` - the array to test.
    Returns:
      whether the given array starts with the bytes for this BOM.
    Since:
      2.19.0

  - ### toString

    public String toString()
    Converts this instance to a String representation of the BOM.
    Overrides:
      `toString` in class `Object`
    Returns:
      the length of the BOM's bytes