Class BitInputStream

java.lang.Object
org.apache.commons.compress.utils.BitInputStream
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
BitStream

public class BitInputStream extends Object implements Closeable
Reads bits from an InputStream.
Since:
1.10
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private long
     
    private int
     
    private final ByteOrder
     
    private final org.apache.commons.io.input.BoundedInputStream
     
    private static final long[]
     
    private static final int
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructor taking an InputStream and its bit arrangement.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Drops bits until the next bits will be read from a byte boundary.
    long
    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
    Returns the number of bits that can be read from this input stream without reading from the underlying input stream at all.
    void
    Clears the cache of bits that have been read from the underlying stream but not yet provided via readBits(int).
    void
     
    private boolean
    ensureCache(int count)
    Fills the cache up to 56 bits
    long
    Returns the number of bytes read from the underlying stream.
    private long
     
    long
    readBits(int count)
    Returns at most 63 bits read from the underlying stream.
    private long
    readCachedBits(int count)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • MAXIMUM_CACHE_SIZE

      private static final int MAXIMUM_CACHE_SIZE
      See Also:
    • MASKS

      private static final long[] MASKS
    • in

      private final org.apache.commons.io.input.BoundedInputStream in
    • byteOrder

      private final ByteOrder byteOrder
    • bitsCached

      private long bitsCached
    • bitsCachedSize

      private int bitsCachedSize
  • Constructor Details

    • 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 Details

    • 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 AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException
    • ensureCache

      private boolean ensureCache(int count) throws IOException
      Fills the cache up to 56 bits
      Parameters:
      count -
      Returns:
      return true, when EOF
      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
    • processBitsGreater57

      private long processBitsGreater57(int count) throws IOException
      Throws:
      IOException
    • 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
    • readCachedBits

      private long readCachedBits(int count)