Class FramedLZ4CompressorInputStream
java.lang.Object
java.io.InputStream
org.apache.commons.compress.compressors.CompressorInputStream
org.apache.commons.compress.compressors.lz4.FramedLZ4CompressorInputStream
- All Implemented Interfaces:
Closeable
,AutoCloseable
,InputStreamStatistics
public class FramedLZ4CompressorInputStream
extends CompressorInputStream
implements InputStreamStatistics
CompressorInputStream for the LZ4 frame format.
Based on the "spec" in the version "1.5.1 (31/03/2015)"
- Since:
- 1.14
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) static final int
(package private) static final int
(package private) static final int
private byte[]
private final XXHash32
(package private) static final int
(package private) static final int
private final XXHash32
private InputStream
private final boolean
private boolean
private boolean
private boolean
private boolean
private boolean
private final CountingInputStream
private boolean
(package private) static final byte[]
private final byte[]
private static final byte
private static final byte[]
private final ByteUtils.ByteSupplier
(package private) static final int
(package private) static final int
(package private) static final int
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a new input stream that decompresses streams compressed using the LZ4 frame format and stops after decompressing the first frame.FramedLZ4CompressorInputStream
(InputStream in, boolean decompressConcatenated) Creates a new input stream that decompresses streams compressed using the LZ4 frame format. -
Method Summary
Modifier and TypeMethodDescriptionprivate void
appendToBlockDependencyBuffer
(byte[] b, int off, int len) void
close()
long
private void
init
(boolean firstFrame) private static boolean
isSkippableFrameSignature
(byte[] b) static boolean
matches
(byte[] signature, int length) Checks if the signature matches what is expected for a .lz4 file.private void
private void
int
read()
int
read
(byte[] b, int off, int len) private void
private int
readOnce
(byte[] b, int off, int len) private int
private boolean
readSignature
(boolean firstFrame) private int
skipSkippableFrame
(byte[] b) Skips over the contents of a skippable frame as well as skippable frames following it.private void
verifyChecksum
(XXHash32 hash, String kind) 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
available, 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
-
LZ4_SIGNATURE
static final byte[] LZ4_SIGNATURE -
SKIPPABLE_FRAME_TRAILER
private static final byte[] SKIPPABLE_FRAME_TRAILER -
SKIPPABLE_FRAME_PREFIX_BYTE_MASK
private static final byte SKIPPABLE_FRAME_PREFIX_BYTE_MASK- See Also:
-
VERSION_MASK
static final int VERSION_MASK- See Also:
-
SUPPORTED_VERSION
static final int SUPPORTED_VERSION- See Also:
-
BLOCK_INDEPENDENCE_MASK
static final int BLOCK_INDEPENDENCE_MASK- See Also:
-
BLOCK_CHECKSUM_MASK
static final int BLOCK_CHECKSUM_MASK- See Also:
-
CONTENT_SIZE_MASK
static final int CONTENT_SIZE_MASK- See Also:
-
CONTENT_CHECKSUM_MASK
static final int CONTENT_CHECKSUM_MASK- See Also:
-
BLOCK_MAX_SIZE_MASK
static final int BLOCK_MAX_SIZE_MASK- See Also:
-
UNCOMPRESSED_FLAG_MASK
static final int UNCOMPRESSED_FLAG_MASK- See Also:
-
oneByte
private final byte[] oneByte -
supplier
-
inputStream
-
decompressConcatenated
private final boolean decompressConcatenated -
expectBlockChecksum
private boolean expectBlockChecksum -
expectBlockDependency
private boolean expectBlockDependency -
expectContentSize
private boolean expectContentSize -
expectContentChecksum
private boolean expectContentChecksum -
currentBlock
-
endReached
private boolean endReached -
inUncompressed
private boolean inUncompressed -
contentHash
-
blockHash
-
blockDependencyBuffer
private byte[] blockDependencyBuffer
-
-
Constructor Details
-
FramedLZ4CompressorInputStream
Creates a new input stream that decompresses streams compressed using the LZ4 frame format and stops after decompressing the first frame.- Parameters:
in
- the InputStream from which to read the compressed data- Throws:
IOException
- if reading fails
-
FramedLZ4CompressorInputStream
public FramedLZ4CompressorInputStream(InputStream in, boolean decompressConcatenated) throws IOException Creates a new input stream that decompresses streams compressed using the LZ4 frame format.- Parameters:
in
- the InputStream from which to read the compressed datadecompressConcatenated
- if true, decompress until the end of the input; if false, stop after the first LZ4 frame and leave the input position to point to the next byte after the frame stream- Throws:
IOException
- if reading fails
-
-
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
-
getCompressedCount
public long getCompressedCount()- Specified by:
getCompressedCount
in interfaceInputStreamStatistics
- Returns:
- the amount of raw or compressed bytes read by the stream
- Since:
- 1.17
-
init
- Throws:
IOException
-
readSignature
- Throws:
IOException
-
readFrameDescriptor
- Throws:
IOException
-
nextBlock
- Throws:
IOException
-
maybeFinishCurrentBlock
- Throws:
IOException
-
verifyContentChecksum
- Throws:
IOException
-
verifyChecksum
- Throws:
IOException
-
readOneByte
- Throws:
IOException
-
readOnce
- Throws:
IOException
-
isSkippableFrameSignature
private static boolean isSkippableFrameSignature(byte[] b) -
skipSkippableFrame
Skips over the contents of a skippable frame as well as skippable frames following it.It then tries to read four more bytes which are supposed to hold an LZ4 signature and returns the number of bytes read while storing the bytes in the given array.
- Throws:
IOException
-
appendToBlockDependencyBuffer
private void appendToBlockDependencyBuffer(byte[] b, int off, int len) -
matches
public static boolean matches(byte[] signature, int length) Checks if the signature matches what is expected for a .lz4 file..lz4 files start with a four byte signature.
- Parameters:
signature
- the bytes to checklength
- the number of bytes to check- Returns:
- true if this is a .sz stream, false otherwise
-