org.apache.commons.compress.utils

## Class BitInputStream

- java.lang.Object
- - org.apache.commons.compress.utils.BitInputStream

- All Implemented Interfaces:
    Closeable, AutoCloseable

      public class BitInputStream
      extends Object
      implements Closeable

  Reads bits from an InputStream.
  Since:
    1.10
  This class is not thread-safe

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `BitInputStream(InputStream in, ByteOrder byteOrder)` Constructor taking an InputStream and its bit arrangement.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `alignWithByteBoundary()` Drops bits until the next bits will be read from a byte boundary.
    `long` | `bitsAvailable()` Returns an estimate of the number of bits that can be read from this input stream without blocking by the next invocation of a method for this input stream.
    `int` | `bitsCached()` Returns the number of bits that can be read from this input stream without reading from the underlying input stream at all.
    `void` | `clearBitCache()` Clears the cache of bits that have been read from the underlying stream but not yet provided via `readBits(int)`.
    `void` | `close()`
    `long` | `getBytesRead()` Returns the number of bytes read from the underlying stream.
    `long` | `readBits(int count)` Returns at most 63 bits read from the underlying stream.

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### BitInputStream

          public BitInputStream(InputStream in,
                                ByteOrder byteOrder)

      Constructor taking an InputStream and its bit arrangement.
      Parameters:
        `in` - the InputStream
        `byteOrder` - the bit arrangement across byte boundaries, either BIG_ENDIAN (aaaaabbb bb000000) or LITTLE_ENDIAN (bbbaaaaa 000000bb)

  - ### Method Detail

    - #### alignWithByteBoundary

          public void alignWithByteBoundary()

      Drops bits until the next bits will be read from a byte boundary.
      Since:
        1.16

    - #### bitsAvailable

          public long bitsAvailable()
                             throws IOException

      Returns an estimate of the number of bits that can be read from this input stream without blocking by the next invocation of a method for this input stream.
      Returns:
        estimate of the number of bits that can be read without blocking
      Throws:
        `IOException` - if the underlying stream throws one when calling available
      Since:
        1.16

    - #### bitsCached

          public int bitsCached()

      Returns the number of bits that can be read from this input stream without reading from the underlying input stream at all.
      Returns:
        estimate of the number of bits that can be read without reading from the underlying stream
      Since:
        1.16

    - #### clearBitCache

          public void clearBitCache()

      Clears the cache of bits that have been read from the underlying stream but not yet provided via `readBits(int)`.

    - #### close

          public void close()
                     throws IOException

      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Throws:
        `IOException`

    - #### getBytesRead

          public long getBytesRead()

      Returns the number of bytes read from the underlying stream.

      This includes the bytes read to fill the current cache and not read as bits so far.

      Returns:
        the number of bytes read from the underlying stream
      Since:
        1.17

    - #### readBits

          public long readBits(int count)
                        throws IOException

      Returns at most 63 bits read from the underlying stream.
      Parameters:
        `count` - the number of bits to read, must be a positive number not bigger than 63.
      Returns:
        the bits concatenated as a long using the stream's byte order. -1 if the end of the underlying stream has been reached before reading the requested number of bits
      Throws:
        `IOException` - on error

Copyright © 2002–2022 The Apache Software Foundation. All rights reserved.