public abstract class LZWInputStream extends CompressorInputStream
Generic LZW implementation. It is used internally for the Z decompressor and the Unshrinking Zip file compression method, but may be useful for third-party projects in implementing their own LZW variations.
Modifier and Type | Field and Description |
---|---|
protected static int |
DEFAULT_CODE_SIZE |
protected BitInputStream |
in |
protected static int |
UNUSED_PREFIX |
Modifier | Constructor and Description |
---|---|
protected |
LZWInputStream(InputStream inputStream,
ByteOrder byteOrder) |
Modifier and Type | Method and Description |
---|---|
protected abstract int |
addEntry(int previousCode,
byte character)
Add a new entry to the dictionary.
|
protected int |
addEntry(int previousCode,
byte character,
int maxTableSize)
Adds a new entry if the maximum table size hasn't been exceeded
and returns the new index.
|
protected int |
addRepeatOfPreviousCode()
Add entry for repeat of previousCode we haven't added, yet.
|
void |
close() |
protected abstract int |
decompressNextSymbol()
Read the next code and expand it.
|
protected int |
expandCodeToOutputStack(int code,
boolean addedUnfinishedEntry)
Expands the entry with index code to the output stack and may
create a new entry
|
protected int |
getClearCode() |
protected int |
getCodeSize() |
protected int |
getPrefix(int offset) |
protected int |
getPrefixesLength() |
protected int |
getTableSize() |
protected void |
incrementCodeSize() |
protected void |
initializeTables(int maxCodeSize)
Initializes the arrays based on the maximum code size.
|
protected void |
initializeTables(int maxCodeSize,
int memoryLimitInKb)
Initializes the arrays based on the maximum code size.
|
int |
read() |
int |
read(byte[] b,
int off,
int len) |
protected int |
readNextCode()
Reads the next code from the stream.
|
protected void |
resetCodeSize() |
protected void |
resetPreviousCode() |
protected void |
setClearCode(int codeSize)
Sets the clear code based on the code size.
|
protected void |
setCodeSize(int cs) |
protected void |
setPrefix(int offset,
int value) |
protected void |
setTableSize(int newSize) |
count, count, getBytesRead, getCount, pushedBackBytes
available, mark, markSupported, read, reset, skip
protected static final int DEFAULT_CODE_SIZE
protected static final int UNUSED_PREFIX
protected final BitInputStream in
protected LZWInputStream(InputStream inputStream, ByteOrder byteOrder)
public void close() throws IOException
close
in interface Closeable
close
in interface AutoCloseable
close
in class InputStream
IOException
public int read() throws IOException
read
in class InputStream
IOException
public int read(byte[] b, int off, int len) throws IOException
read
in class InputStream
IOException
protected abstract int decompressNextSymbol() throws IOException
IOException
- on errorprotected abstract int addEntry(int previousCode, byte character) throws IOException
previousCode
- the previous codecharacter
- the next character to appendIOException
- on errorprotected void setClearCode(int codeSize)
codeSize
- code sizeprotected void initializeTables(int maxCodeSize, int memoryLimitInKb) throws MemoryLimitException
maxCodeSize
- maximum code sizememoryLimitInKb
- maximum allowed estimated memory usage in KbMemoryLimitException
- if estimated memory usage is greater than memoryLimitInKbprotected void initializeTables(int maxCodeSize)
maxCodeSize
- maximum code sizeprotected int readNextCode() throws IOException
IOException
- on errorprotected int addEntry(int previousCode, byte character, int maxTableSize)
previousCode
- the previous codecharacter
- the character to appendmaxTableSize
- the maximum table sizeprotected int addRepeatOfPreviousCode() throws IOException
IOException
- on errorprotected int expandCodeToOutputStack(int code, boolean addedUnfinishedEntry) throws IOException
code
- the codeaddedUnfinishedEntry
- whether unfinished entries have been addedIOException
- on errorprotected int getCodeSize()
protected void resetCodeSize()
protected void setCodeSize(int cs)
protected void incrementCodeSize()
protected void resetPreviousCode()
protected int getPrefix(int offset)
protected void setPrefix(int offset, int value)
protected int getPrefixesLength()
protected int getClearCode()
protected int getTableSize()
protected void setTableSize(int newSize)
Copyright © 2018 The Apache Software Foundation. All rights reserved.