Class ByteBitInputStream
- java.lang.Object
-
- net.sourceforge.plantuml.code.deflate.ByteBitInputStream
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
,BitInputStream
public final class ByteBitInputStream extends Object implements BitInputStream
A stream of bits that can be read. Because they come from an underlying byte stream, the total number of bits is always a multiple of 8. The bits are read in little endian. Mutable and not thread-safe.
-
-
Constructor Summary
Constructors Constructor Description ByteBitInputStream(InputStream in)
Constructs a bit input stream based on the specified byte input stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
Closes this stream and the underlying input stream.int
getBitPosition()
Returns the current bit position, which ascends from 0 to 7 as bits are read.int
read()
Reads a bit from this stream.int
readByte()
Discards the remainder of the current byte (if any) and reads the next whole byte from the stream.int
readNoEof()
Reads a bit from this stream.
-
-
-
Constructor Detail
-
ByteBitInputStream
public ByteBitInputStream(InputStream in)
Constructs a bit input stream based on the specified byte input stream.- Parameters:
in
- the byte input stream (notnull
)- Throws:
NullPointerException
- if the input stream isnull
-
-
Method Detail
-
getBitPosition
public int getBitPosition()
Description copied from interface:BitInputStream
Returns the current bit position, which ascends from 0 to 7 as bits are read.- Specified by:
getBitPosition
in interfaceBitInputStream
- Returns:
- the current bit position, which is between 0 and 7
-
readByte
public int readByte() throws IOException
Description copied from interface:BitInputStream
Discards the remainder of the current byte (if any) and reads the next whole byte from the stream. Returns -1 if the end of stream is reached.- Specified by:
readByte
in interfaceBitInputStream
- Returns:
- the next byte from the stream, or -1 if the end of stream is reached
- Throws:
IOException
-
read
public int read() throws IOException
Description copied from interface:BitInputStream
Reads a bit from this stream. Returns 0 or 1 if a bit is available, or -1 if the end of stream is reached. The end of stream always occurs on a byte boundary.- Specified by:
read
in interfaceBitInputStream
- Returns:
- the next bit of 0 or 1, or -1 for the end of stream
- Throws:
IOException
- if an I/O exception occurred
-
readNoEof
public int readNoEof() throws IOException
Description copied from interface:BitInputStream
Reads a bit from this stream. Returns 0 or 1 if a bit is available, or throws anEOFException
if the end of stream is reached. The end of stream always occurs on a byte boundary.- Specified by:
readNoEof
in interfaceBitInputStream
- Returns:
- the next bit of 0 or 1
- Throws:
IOException
- if an I/O exception occurredEOFException
- if the end of stream is reached
-
close
public void close() throws IOException
Description copied from interface:BitInputStream
Closes this stream and the underlying input stream.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceBitInputStream
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
- if an I/O exception occurred
-
-