Class BZip2CompressorInputStream

java.lang.Object
java.io.InputStream
org.jboss.shrinkwrap.impl.base.io.tar.bzip.BZip2CompressorInputStream
All Implemented Interfaces:
Closeable, AutoCloseable, BZip2Constants

public class BZip2CompressorInputStream extends InputStream implements BZip2Constants
An input stream that decompresses from the BZip2 format to be read as any other stream.

Forked from Apache Commons-Compress with possible changes

  • Field Details

    • bytesRead

      private long bytesRead
    • 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
    • bsBuff

      private int bsBuff
    • bsLive

      private int bsLive
    • crc

      private final CRC crc
    • nInUse

      private int nInUse
    • in

      private InputStream in
    • decompressConcatenated

      private final boolean decompressConcatenated
    • currentChar

      private int currentChar
    • EOF

      private static final int EOF
      See Also:
    • START_BLOCK_STATE

      private static final int START_BLOCK_STATE
      See Also:
    • RAND_PART_A_STATE

      private static final int RAND_PART_A_STATE
      See Also:
    • RAND_PART_B_STATE

      private static final int RAND_PART_B_STATE
      See Also:
    • RAND_PART_C_STATE

      private static final int RAND_PART_C_STATE
      See Also:
    • NO_RAND_PART_A_STATE

      private static final int NO_RAND_PART_A_STATE
      See Also:
    • NO_RAND_PART_B_STATE

      private static final int NO_RAND_PART_B_STATE
      See Also:
    • NO_RAND_PART_C_STATE

      private static final int NO_RAND_PART_C_STATE
      See Also:
    • 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

      All memory intensive stuff. This field is initialized by initBlock().
  • Constructor Details

    • BZip2CompressorInputStream

      public BZip2CompressorInputStream(InputStream in) throws IOException
      Constructs a new BZip2CompressorInputStream which decompresses bytes read from the specified stream. This doesn't suppprt decompressing concatenated .bz2 files.
      Throws:
      IOException - if the stream content is malformed or an I/O error occurs.
      NullPointerException - if in == null
    • BZip2CompressorInputStream

      public BZip2CompressorInputStream(InputStream in, boolean decompressConcatenated) throws IOException
      Constructs a new BZip2CompressorInputStream which decompresses bytes read from the specified stream.
      Parameters:
      in - the InputStream from which this object should be created
      decompressConcatenated - 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:
      IOException - if the stream content is malformed or an I/O error occurs.
      NullPointerException - if in == null
  • Method Details

    • count

      protected void count(int read)
      Increments the counter of already read bytes. Doesn't increment if the EOF has been hit (read == -1)
      Parameters:
      read - the number of bytes read
      Since:
      1.1
    • count

      protected void count(long read)
      Increments the counter of already read bytes. Doesn't increment if the EOF has been hit (read == -1)
      Parameters:
      read - the number of bytes read
    • getCount

      @Deprecated public int getCount()
      Deprecated.
      this method may yield wrong results for large archives, use #getBytesRead instead
      Returns the current number of bytes read from this stream.
      Returns:
      the number of read bytes
    • getBytesRead

      public long getBytesRead()
      Returns the current number of bytes read from this stream.
      Returns:
      the number of read bytes
      Since:
      1.1
    • read

      public int read() throws IOException
      Specified by:
      read in class InputStream
      Throws:
      IOException
    • read

      public int read(byte[] dest, int offs, int len) throws IOException
      Overrides:
      read in class InputStream
      Throws:
      IOException
    • makeMaps

      private void makeMaps()
    • read0

      private int read0() throws IOException
      Throws:
      IOException
    • init

      private boolean init(boolean isFirstStream) throws IOException
      Throws:
      IOException
    • initBlock

      private void initBlock() throws IOException
      Throws:
      IOException
    • endBlock

      private void endBlock() throws IOException
      Throws:
      IOException
    • complete

      private boolean complete() throws IOException
      Throws:
      IOException
    • close

      public void close() throws IOException
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class InputStream
      Throws:
      IOException
    • bsR

      private int bsR(int n) throws IOException
      Throws:
      IOException
    • bsGetBit

      private boolean bsGetBit() throws IOException
      Throws:
      IOException
    • bsGetUByte

      private char bsGetUByte() throws IOException
      Throws:
      IOException
    • bsGetInt

      private int bsGetInt() throws IOException
      Throws:
      IOException
    • hbCreateDecodeTables

      private static void hbCreateDecodeTables(int[] limit, int[] base, int[] perm, char[] length, int minLen, int maxLen, int alphaSize)
      Called by createHuffmanDecodingTables() exclusively.
    • recvDecodingTables

      private void recvDecodingTables() throws IOException
      Throws:
      IOException
    • createHuffmanDecodingTables

      private void createHuffmanDecodingTables(int alphaSize, int nGroups)
      Called by recvDecodingTables() exclusively.
    • getAndMoveToFrontDecode

      private void getAndMoveToFrontDecode() throws IOException
      Throws:
      IOException
    • getAndMoveToFrontDecode0

      private int getAndMoveToFrontDecode0(int groupNo) throws IOException
      Throws:
      IOException
    • setupBlock

      private void setupBlock() throws IOException
      Throws:
      IOException
    • setupRandPartA

      private void setupRandPartA() throws IOException
      Throws:
      IOException
    • setupNoRandPartA

      private void setupNoRandPartA() throws IOException
      Throws:
      IOException
    • setupRandPartB

      private void setupRandPartB() throws IOException
      Throws:
      IOException
    • setupRandPartC

      private void setupRandPartC() throws IOException
      Throws:
      IOException
    • setupNoRandPartB

      private void setupNoRandPartB() throws IOException
      Throws:
      IOException
    • setupNoRandPartC

      private void setupNoRandPartC() throws IOException
      Throws:
      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 check
      length - the number of bytes to check
      Returns:
      true, if this stream is a bzip2 compressed stream, false otherwise
      Since:
      1.1