Class FramedSnappyCompressorInputStream
java.lang.Object
java.io.InputStream
org.apache.commons.compress.compressors.CompressorInputStream
org.apache.commons.compress.compressors.snappy.FramedSnappyCompressorInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
,InputStreamStatistics
public class FramedSnappyCompressorInputStream
extends CompressorInputStream
implements InputStreamStatistics
CompressorInputStream for the framing Snappy format.
Based on the "spec" in the version "Last revised: 2013-10-25"
- Since:
- 1.7
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final int
private final PureJavaCrc32C
(package private) static final int
private final CountingInputStream
private SnappyCompressorInputStream
private final FramedSnappyDialect
The dialect to expectprivate boolean
private long
private final PushbackInputStream
The underlying stream to read compressed data fromprivate boolean
(package private) static final long
package private for tests only.private static final int
private static final int
private static final int
private final byte[]
private static final int
private static final int
private final ByteUtils.ByteSupplier
(package private) static final byte[]
private static final int
private int
private long
-
Constructor Summary
ConstructorsConstructorDescriptionConstructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream using theFramedSnappyDialect.STANDARD
dialect.FramedSnappyCompressorInputStream
(InputStream in, int blockSize, FramedSnappyDialect dialect) Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream.Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream. -
Method Summary
Modifier and TypeMethodDescriptionint
void
close()
long
static boolean
matches
(byte[] signature, int length) Checks if the signature matches what is expected for a .sz file.int
read()
int
read
(byte[] b, int off, int len) private long
readCrc()
private void
private int
readOnce
(byte[] b, int off, int len) Read from the current chunk into the given array.private int
private int
readSize()
private void
private void
(package private) static long
unmask
(long x) private void
Methods inherited from class org.apache.commons.compress.compressors.CompressorInputStream
count, count, getBytesRead, getCount, getUncompressedCount, pushedBackBytes
Methods inherited from class java.io.InputStream
mark, markSupported, read, readAllBytes, 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 Details
-
MASK_OFFSET
static final long MASK_OFFSETpackage private for tests only.- See Also:
-
STREAM_IDENTIFIER_TYPE
private static final int STREAM_IDENTIFIER_TYPE- See Also:
-
COMPRESSED_CHUNK_TYPE
static final int COMPRESSED_CHUNK_TYPE- See Also:
-
UNCOMPRESSED_CHUNK_TYPE
private static final int UNCOMPRESSED_CHUNK_TYPE- See Also:
-
PADDING_CHUNK_TYPE
private static final int PADDING_CHUNK_TYPE- See Also:
-
MIN_UNSKIPPABLE_TYPE
private static final int MIN_UNSKIPPABLE_TYPE- See Also:
-
MAX_UNSKIPPABLE_TYPE
private static final int MAX_UNSKIPPABLE_TYPE- See Also:
-
MAX_SKIPPABLE_TYPE
private static final int MAX_SKIPPABLE_TYPE- See Also:
-
SZ_SIGNATURE
static final byte[] SZ_SIGNATURE -
unreadBytes
private long unreadBytes -
countingStream
-
inputStream
The underlying stream to read compressed data from -
dialect
The dialect to expect -
currentCompressedChunk
-
oneByte
private final byte[] oneByte -
endReached
private boolean endReached -
inUncompressedChunk
private boolean inUncompressedChunk -
uncompressedBytesRemaining
private int uncompressedBytesRemaining -
expectedChecksum
private long expectedChecksum -
blockSize
private final int blockSize -
checksum
-
supplier
-
-
Constructor Details
-
FramedSnappyCompressorInputStream
Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream using theFramedSnappyDialect.STANDARD
dialect.- Parameters:
in
- the InputStream from which to read the compressed data- Throws:
IOException
- if reading fails
-
FramedSnappyCompressorInputStream
public FramedSnappyCompressorInputStream(InputStream in, FramedSnappyDialect dialect) throws IOException Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream.- Parameters:
in
- the InputStream from which to read the compressed datadialect
- the dialect used by the compressed stream- Throws:
IOException
- if reading fails
-
FramedSnappyCompressorInputStream
public FramedSnappyCompressorInputStream(InputStream in, int blockSize, FramedSnappyDialect dialect) throws IOException Constructs a new input stream that decompresses snappy-framed-compressed data from the specified input stream.- Parameters:
in
- the InputStream from which to read the compressed datablockSize
- the block size to use for the compressed streamdialect
- the dialect used by the compressed stream- Throws:
IOException
- if reading failsIllegalArgumentException
- if blockSize is not bigger than 0- Since:
- 1.14
-
-
Method Details
-
read
- Specified by:
read
in classInputStream
- Throws:
IOException
-
close
- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classInputStream
- Throws:
IOException
-
read
- Overrides:
read
in classInputStream
- Throws:
IOException
-
available
- Overrides:
available
in classInputStream
- Throws:
IOException
-
getCompressedCount
public long getCompressedCount()- Specified by:
getCompressedCount
in interfaceInputStreamStatistics
- Returns:
- the amount of raw or compressed bytes read by the stream
- Since:
- 1.17
-
readOnce
Read from the current chunk into the given array.- Returns:
- -1 if there is no current chunk or the number of bytes read from the current chunk (which may be -1 if the end of the chunk is reached).
- Throws:
IOException
-
readNextBlock
- Throws:
IOException
-
readCrc
- Throws:
IOException
-
unmask
static long unmask(long x) -
readSize
- Throws:
IOException
-
skipBlock
- Throws:
IOException
-
readStreamIdentifier
- Throws:
IOException
-
readOneByte
- Throws:
IOException
-
verifyLastChecksumAndReset
- Throws:
IOException
-
matches
public static boolean matches(byte[] signature, int length) Checks if the signature matches what is expected for a .sz file..sz files start with a chunk with tag 0xff and content sNaPpY.
- Parameters:
signature
- the bytes to checklength
- the number of bytes to check- Returns:
- true if this is a .sz stream, false otherwise
-