Class BZip2CompressorInputStream
- java.lang.Object
-
- java.io.InputStream
-
- org.apache.commons.compress.compressors.CompressorInputStream
-
- org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable,BZip2Constants,InputStreamStatistics
public class BZip2CompressorInputStream extends CompressorInputStream implements BZip2Constants, InputStreamStatistics
An input stream that decompresses from the BZip2 format to be read as any other stream.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classBZip2CompressorInputStream.Data
-
Field Summary
Fields Modifier and Type Field Description private BitInputStreambinprivate booleanblockRandomisedprivate intblockSize100kalways: in the range 0 ..private intcomputedBlockCRCprivate intcomputedCombinedCRCprivate CRCcrcprivate intcurrentStateprivate BZip2CompressorInputStream.DatadataAll memory intensive stuff.private booleandecompressConcatenatedprivate static intEOFprivate intlastIndex of the last char in the block, so the block size == last + 1.private intnInUseprivate static intNO_RAND_PART_A_STATEprivate static intNO_RAND_PART_B_STATEprivate static intNO_RAND_PART_C_STATEprivate intorigPtrIndex in zptr[] of original string after sorting.private static intRAND_PART_A_STATEprivate static intRAND_PART_B_STATEprivate static intRAND_PART_C_STATEprivate static intSTART_BLOCK_STATEprivate intstoredBlockCRCprivate intstoredCombinedCRCprivate intsu_ch2private intsu_chPrevprivate intsu_countprivate intsu_i2private intsu_j2private intsu_rNToGoprivate intsu_rTPosprivate intsu_tPosprivate charsu_z-
Fields inherited from interface org.apache.commons.compress.compressors.bzip2.BZip2Constants
BASEBLOCKSIZE, G_SIZE, MAX_ALPHA_SIZE, MAX_CODE_LEN, MAX_SELECTORS, N_GROUPS, N_ITERS, NUM_OVERSHOOT_BYTES, RUNA, RUNB
-
-
Constructor Summary
Constructors Constructor Description BZip2CompressorInputStream(java.io.InputStream in)Constructs a new BZip2CompressorInputStream which decompresses bytes read from the specified stream.BZip2CompressorInputStream(java.io.InputStream in, boolean decompressConcatenated)Constructs a new BZip2CompressorInputStream which decompresses bytes read from the specified stream.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static booleanbsGetBit(BitInputStream bin)private static intbsGetInt(BitInputStream bin)private static charbsGetUByte(BitInputStream bin)private static intbsR(BitInputStream bin, int n)read bits from the input streamprivate static voidcheckBounds(int checkVal, int limitExclusive, java.lang.String name)voidclose()private booleancomplete()private voidcreateHuffmanDecodingTables(int alphaSize, int nGroups)Called by recvDecodingTables() exclusively.private voidendBlock()private voidgetAndMoveToFrontDecode()private intgetAndMoveToFrontDecode0()longgetCompressedCount()private static voidhbCreateDecodeTables(int[] limit, int[] base, int[] perm, char[] length, int minLen, int maxLen, int alphaSize)Called by createHuffmanDecodingTables() exclusively.private booleaninit(boolean isFirstStream)private voidinitBlock()private voidmakeMaps()static booleanmatches(byte[] signature, int length)Checks if the signature matches what is expected for a bzip2 file.intread()intread(byte[] dest, int offs, int len)private intread0()private intreadNextByte(BitInputStream in)private voidrecvDecodingTables()private intsetupBlock()private intsetupNoRandPartA()private intsetupNoRandPartB()private intsetupNoRandPartC()private intsetupRandPartA()private intsetupRandPartB()private intsetupRandPartC()-
Methods inherited from class org.apache.commons.compress.compressors.CompressorInputStream
count, count, getBytesRead, getCount, getUncompressedCount, pushedBackBytes
-
Methods inherited from class java.io.InputStream
available, mark, markSupported, nullInputStream, read, readAllBytes, readNBytes, readNBytes, reset, skip, transferTo
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.commons.compress.utils.InputStreamStatistics
getUncompressedCount
-
-
-
-
Field Detail
-
last
private int last
Index of the last char in the block, so the block size == last + 1.
-
origPtr
private int origPtr
Index in zptr[] of original string after sorting.
-
blockSize100k
private int blockSize100k
always: in the range 0 .. 9. The current block size is 100000 * this number.
-
blockRandomised
private boolean blockRandomised
-
crc
private final CRC crc
-
nInUse
private int nInUse
-
bin
private BitInputStream bin
-
decompressConcatenated
private final boolean decompressConcatenated
-
EOF
private static final int EOF
- See Also:
- Constant Field Values
-
START_BLOCK_STATE
private static final int START_BLOCK_STATE
- See Also:
- Constant Field Values
-
RAND_PART_A_STATE
private static final int RAND_PART_A_STATE
- See Also:
- Constant Field Values
-
RAND_PART_B_STATE
private static final int RAND_PART_B_STATE
- See Also:
- Constant Field Values
-
RAND_PART_C_STATE
private static final int RAND_PART_C_STATE
- See Also:
- Constant Field Values
-
NO_RAND_PART_A_STATE
private static final int NO_RAND_PART_A_STATE
- See Also:
- Constant Field Values
-
NO_RAND_PART_B_STATE
private static final int NO_RAND_PART_B_STATE
- See Also:
- Constant Field Values
-
NO_RAND_PART_C_STATE
private static final int NO_RAND_PART_C_STATE
- See Also:
- Constant Field Values
-
currentState
private int currentState
-
storedBlockCRC
private int storedBlockCRC
-
storedCombinedCRC
private int storedCombinedCRC
-
computedBlockCRC
private int computedBlockCRC
-
computedCombinedCRC
private int computedCombinedCRC
-
su_count
private int su_count
-
su_ch2
private int su_ch2
-
su_chPrev
private int su_chPrev
-
su_i2
private int su_i2
-
su_j2
private int su_j2
-
su_rNToGo
private int su_rNToGo
-
su_rTPos
private int su_rTPos
-
su_tPos
private int su_tPos
-
su_z
private char su_z
-
data
private BZip2CompressorInputStream.Data data
All memory intensive stuff. This field is initialized by initBlock().
-
-
Constructor Detail
-
BZip2CompressorInputStream
public BZip2CompressorInputStream(java.io.InputStream in) throws java.io.IOExceptionConstructs a new BZip2CompressorInputStream which decompresses bytes read from the specified stream. This doesn't support decompressing concatenated .bz2 files.- Parameters:
in- the InputStream from which this object should be created- Throws:
java.io.IOException- if the stream content is malformed or an I/O error occurs.java.lang.NullPointerException- ifin == null
-
BZip2CompressorInputStream
public BZip2CompressorInputStream(java.io.InputStream in, boolean decompressConcatenated) throws java.io.IOExceptionConstructs a new BZip2CompressorInputStream which decompresses bytes read from the specified stream.- Parameters:
in- the InputStream from which this object should be createddecompressConcatenated- if true, decompress until the end of the input; if false, stop after the first .bz2 stream and leave the input position to point to the next byte after the .bz2 stream- Throws:
java.io.IOException- ifin == null, the stream content is malformed, or an I/O error occurs.
-
-
Method Detail
-
read
public int read() throws java.io.IOException- Specified by:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
read
public int read(byte[] dest, int offs, int len) throws java.io.IOException- Overrides:
readin classjava.io.InputStream- Throws:
java.io.IOException
-
getCompressedCount
public long getCompressedCount()
- Specified by:
getCompressedCountin interfaceInputStreamStatistics- Returns:
- the amount of raw or compressed bytes read by the stream
- Since:
- 1.17
-
makeMaps
private void makeMaps()
-
read0
private int read0() throws java.io.IOException- Throws:
java.io.IOException
-
readNextByte
private int readNextByte(BitInputStream in) throws java.io.IOException
- Throws:
java.io.IOException
-
init
private boolean init(boolean isFirstStream) throws java.io.IOException- Throws:
java.io.IOException
-
initBlock
private void initBlock() throws java.io.IOException- Throws:
java.io.IOException
-
endBlock
private void endBlock() throws java.io.IOException- Throws:
java.io.IOException
-
complete
private boolean complete() throws java.io.IOException- Throws:
java.io.IOException
-
close
public void close() throws java.io.IOException- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacejava.io.Closeable- Overrides:
closein classjava.io.InputStream- Throws:
java.io.IOException
-
bsR
private static int bsR(BitInputStream bin, int n) throws java.io.IOException
read bits from the input stream- Parameters:
n- the number of bits to read, must not exceed 32?- Returns:
- the requested bits combined into an int
- Throws:
java.io.IOException
-
bsGetBit
private static boolean bsGetBit(BitInputStream bin) throws java.io.IOException
- Throws:
java.io.IOException
-
bsGetUByte
private static char bsGetUByte(BitInputStream bin) throws java.io.IOException
- Throws:
java.io.IOException
-
bsGetInt
private static int bsGetInt(BitInputStream bin) throws java.io.IOException
- Throws:
java.io.IOException
-
checkBounds
private static void checkBounds(int checkVal, int limitExclusive, java.lang.String name) throws java.io.IOException- Throws:
java.io.IOException
-
hbCreateDecodeTables
private static void hbCreateDecodeTables(int[] limit, int[] base, int[] perm, char[] length, int minLen, int maxLen, int alphaSize) throws java.io.IOExceptionCalled by createHuffmanDecodingTables() exclusively.- Throws:
java.io.IOException
-
recvDecodingTables
private void recvDecodingTables() throws java.io.IOException- Throws:
java.io.IOException
-
createHuffmanDecodingTables
private void createHuffmanDecodingTables(int alphaSize, int nGroups) throws java.io.IOExceptionCalled by recvDecodingTables() exclusively.- Throws:
java.io.IOException
-
getAndMoveToFrontDecode
private void getAndMoveToFrontDecode() throws java.io.IOException- Throws:
java.io.IOException
-
getAndMoveToFrontDecode0
private int getAndMoveToFrontDecode0() throws java.io.IOException- Throws:
java.io.IOException
-
setupBlock
private int setupBlock() throws java.io.IOException- Throws:
java.io.IOException
-
setupRandPartA
private int setupRandPartA() throws java.io.IOException- Throws:
java.io.IOException
-
setupNoRandPartA
private int setupNoRandPartA() throws java.io.IOException- Throws:
java.io.IOException
-
setupRandPartB
private int setupRandPartB() throws java.io.IOException- Throws:
java.io.IOException
-
setupRandPartC
private int setupRandPartC() throws java.io.IOException- Throws:
java.io.IOException
-
setupNoRandPartB
private int setupNoRandPartB() throws java.io.IOException- Throws:
java.io.IOException
-
setupNoRandPartC
private int setupNoRandPartC() throws java.io.IOException- Throws:
java.io.IOException
-
matches
public static boolean matches(byte[] signature, int length)Checks if the signature matches what is expected for a bzip2 file.- Parameters:
signature- the bytes to checklength- the number of bytes to check- Returns:
- true, if this stream is a bzip2 compressed stream, false otherwise
- Since:
- 1.1
-
-