Package com.webcodepro.shrinkit.io
Class BitInputStream
java.lang.Object
java.io.InputStream
com.webcodepro.shrinkit.io.BitInputStream
- All Implemented Interfaces:
BitConstants
,Closeable
,AutoCloseable
The BitInputStream allows varying bit sizes to be pulled out of the
wrapped InputStream. This is useful for LZW type compression algorithms
where 9-12 bit codes are used instead of the 8-bit byte.
Warning: The read(byte[])
and read(byte[], int, int)
methods of InputStream
will not work appropriately with any
bit size > 8 bits.
-
Field Summary
Fields inherited from interface com.webcodepro.shrinkit.io.BitConstants
BIT_MASKS
-
Constructor Summary
ConstructorsConstructorDescriptionBitInputStream
(InputStream is, int startingNumberOfBits) Create a BitInputStream wrapping the givenInputStream
and reading the number of bits specified. -
Method Summary
Modifier and TypeMethodDescriptionvoid
When shifting from buffer to buffer, the input stream also should be reset.int
Answer with the current bit mask for the current bit size.void
Increase the requested number of bits by one.int
read()
Read a number of bits off of the wrapped InputStream.void
setRequestedNumberOfBits
(int numberOfBits) Set the number of bits to be read with each call toread()
.Methods inherited from class java.io.InputStream
available, close, mark, markSupported, nullInputStream, read, read, readAllBytes, readNBytes, readNBytes, reset, skip, skipNBytes, transferTo
-
Constructor Details
-
BitInputStream
Create a BitInputStream wrapping the givenInputStream
and reading the number of bits specified.
-
-
Method Details
-
setRequestedNumberOfBits
public void setRequestedNumberOfBits(int numberOfBits) Set the number of bits to be read with each call toread()
. -
increaseRequestedNumberOfBits
public void increaseRequestedNumberOfBits()Increase the requested number of bits by one. This is the general usage and prevents client from needing to track the requested number of bits or from making various method calls. -
getBitMask
public int getBitMask()Answer with the current bit mask for the current bit size. -
read
Read a number of bits off of the wrapped InputStream.- Specified by:
read
in classInputStream
- Throws:
IOException
-
clearRemainingBitsOfData
public void clearRemainingBitsOfData()When shifting from buffer to buffer, the input stream also should be reset. This allows the "left over" bits to be cleared.
-