Package com.webcodepro.shrinkit.io
Class BitOutputStream
java.lang.Object
java.io.OutputStream
com.webcodepro.shrinkit.io.BitOutputStream
- All Implemented Interfaces:
BitConstants
,Closeable
,Flushable
,AutoCloseable
The BitOutputStream allows varying bit sizes to be written to the wrapped
OutputStream. This is useful for LZW type compression algorithms
where 9-12 bit codes are used instead of the 8-bit byte.
Warning: The write(byte[])
and write(byte[], int, int)
methods of OutputStream
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
ConstructorsConstructorDescriptionBitOutputStream
(OutputStream os, int startingNumberOfBits) Create a BitOutpuStream wrapping the givenOutputStream
and writing the number of bits specified. -
Method Summary
Modifier and TypeMethodDescriptionvoid
When shifting from buffer to buffer, this OutputStream also should be reset.void
close()
Close the output stream and write any remaining byte to the output.int
Answer with the current bit mask for the current bit size.void
Increase the requested number of bits by one.void
setRequestedNumberOfBits
(int numberOfBits) Set the number of bits to be write with each call towrite(int)
.void
write
(int b) Write the number of bits to the wrapped OutputStream.Methods inherited from class java.io.OutputStream
flush, nullOutputStream, write, write
-
Constructor Details
-
BitOutputStream
Create a BitOutpuStream wrapping the givenOutputStream
and writing the number of bits specified.
-
-
Method Details
-
setRequestedNumberOfBits
public void setRequestedNumberOfBits(int numberOfBits) Set the number of bits to be write with each call towrite(int)
. -
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. -
write
Write the number of bits to the wrapped OutputStream.- Specified by:
write
in classOutputStream
- Throws:
IOException
-
clearRemainingBitsOfData
public void clearRemainingBitsOfData()When shifting from buffer to buffer, this OutputStream also should be reset. This allows the "left over" bits to be cleared. -
close
Close the output stream and write any remaining byte to the output. Note that we may very well end up with extra bits if there are < 8 bits remaining.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classOutputStream
- Throws:
IOException
-