public class CompressorStreamFactory extends Object implements CompressorStreamProvider
Factory to create Compressor[In|Out]putStreams from names. To add other implementations you should extend CompressorStreamFactory and override the appropriate methods (and call their implementation from super of course).
Example (Compressing a file):final OutputStream out = Files.newOutputStream(output.toPath()); CompressorOutputStream cos = new CompressorStreamFactory() .createCompressorOutputStream(CompressorStreamFactory.BZIP2, out); IOUtils.copy(Files.newInputStream(input.toPath()), cos); cos.close();Example (Decompressing a file):
final InputStream is = Files.newInputStream(input.toPath()); CompressorInputStream in = new CompressorStreamFactory().createCompressorInputStream(CompressorStreamFactory.BZIP2, is); IOUtils.copy(in, Files.newOutputStream(output.toPath())); in.close();
Modifier and Type | Field and Description |
---|---|
static String |
BROTLI
Constant (value "br") used to identify the BROTLI compression
algorithm.
|
static String |
BZIP2
Constant (value "bzip2") used to identify the BZIP2 compression
algorithm.
|
static String |
DEFLATE
Constant (value "deflate") used to identify the Deflate compress method.
|
static String |
DEFLATE64
Constant (value "deflate64") used to identify the Deflate64 compress method.
|
static String |
GZIP
Constant (value "gz") used to identify the GZIP compression
algorithm.
|
static String |
LZ4_BLOCK
Constant (value "lz4-block") used to identify the block LZ4
compression method.
|
static String |
LZ4_FRAMED
Constant (value "lz4-framed") used to identify the frame LZ4
compression method.
|
static String |
LZMA
Constant (value "lzma") used to identify the LZMA compression method.
|
static String |
PACK200
Constant (value "pack200") used to identify the PACK200 compression
algorithm.
|
static String |
SNAPPY_FRAMED
Constant (value "snappy-framed") used to identify the "framed" Snappy
compression method.
|
static String |
SNAPPY_RAW
Constant (value "snappy-raw") used to identify the "raw" Snappy compression
method.
|
static String |
XZ
Constant (value "xz") used to identify the XZ compression method.
|
static String |
Z
Constant (value "z") used to identify the traditional Unix compress
method.
|
static String |
ZSTANDARD
Constant (value "zstd") used to identify the Zstandard compression
algorithm.
|
Constructor and Description |
---|
CompressorStreamFactory()
Create an instance with the decompress Concatenated option set to false.
|
CompressorStreamFactory(boolean decompressUntilEOF)
Create an instance with the provided decompress Concatenated option.
|
CompressorStreamFactory(boolean decompressUntilEOF,
int memoryLimitInKb)
Create an instance with the provided decompress Concatenated option.
|
Modifier and Type | Method and Description |
---|---|
CompressorInputStream |
createCompressorInputStream(InputStream in)
Create an compressor input stream from an input stream, autodetecting the
compressor type from the first few bytes of the stream.
|
CompressorInputStream |
createCompressorInputStream(String name,
InputStream in)
Creates a compressor input stream from a compressor name and an input
stream.
|
CompressorInputStream |
createCompressorInputStream(String name,
InputStream in,
boolean actualDecompressConcatenated)
Creates a compressor input stream from a compressor name and an input
stream.
|
CompressorOutputStream |
createCompressorOutputStream(String name,
OutputStream out)
Creates an compressor output stream from an compressor name and an output
stream.
|
static String |
detect(InputStream inputStream)
Try to detect the type of compressor stream.
|
static SortedMap<String,CompressorStreamProvider> |
findAvailableCompressorInputStreamProviders()
Constructs a new sorted map from input stream provider names to provider
objects.
|
static SortedMap<String,CompressorStreamProvider> |
findAvailableCompressorOutputStreamProviders()
Constructs a new sorted map from output stream provider names to provider
objects.
|
static String |
getBrotli() |
static String |
getBzip2() |
SortedMap<String,CompressorStreamProvider> |
getCompressorInputStreamProviders() |
SortedMap<String,CompressorStreamProvider> |
getCompressorOutputStreamProviders() |
Boolean |
getDecompressUntilEOF() |
static String |
getDeflate() |
static String |
getDeflate64() |
static String |
getGzip() |
Set<String> |
getInputStreamCompressorNames()
Gets all the input stream compressor names for this provider
|
static String |
getLZ4Block() |
static String |
getLZ4Framed() |
static String |
getLzma() |
Set<String> |
getOutputStreamCompressorNames()
Gets all the output stream compressor names for this provider
|
static String |
getPack200() |
static CompressorStreamFactory |
getSingleton() |
static String |
getSnappyFramed() |
static String |
getSnappyRaw() |
static String |
getXz() |
static String |
getZ() |
static String |
getZstandard() |
void |
setDecompressConcatenated(boolean decompressConcatenated)
Deprecated.
1.10 use the
CompressorStreamFactory(boolean)
constructor instead |
public static final String BROTLI
public static final String BZIP2
public static final String GZIP
public static final String PACK200
public static final String XZ
public static final String LZMA
public static final String SNAPPY_FRAMED
public static final String SNAPPY_RAW
public static final String Z
public static final String DEFLATE
public static final String DEFLATE64
public static final String LZ4_BLOCK
public static final String LZ4_FRAMED
public static final String ZSTANDARD
public CompressorStreamFactory()
public CompressorStreamFactory(boolean decompressUntilEOF, int memoryLimitInKb)
decompressUntilEOF
- if true, decompress until the end of the input; if false, stop
after the first stream and leave the input position to point
to the next byte after the stream. This setting applies to the
gzip, bzip2 and xz formats only.memoryLimitInKb
- Some streams require allocation of potentially significant
byte arrays/tables, and they can offer checks to prevent OOMs
on corrupt files. Set the maximum allowed memory allocation in KBs.public CompressorStreamFactory(boolean decompressUntilEOF)
decompressUntilEOF
- if true, decompress until the end of the input; if false, stop
after the first stream and leave the input position to point
to the next byte after the stream. This setting applies to the
gzip, bzip2 and xz formats only.public static SortedMap<String,CompressorStreamProvider> findAvailableCompressorInputStreamProviders()
The map returned by this method will have one entry for each provider for which support is available in the current Java virtual machine. If two or more supported provider have the same name then the resulting map will contain just one of them; which one it will contain is not specified.
The invocation of this method, and the subsequent use of the resulting map, may cause time-consuming disk or network I/O operations to occur. This method is provided for applications that need to enumerate all of the available providers, for example to allow user provider selection.
This method may return different results at different times if new providers are dynamically made available to the current Java virtual machine.
public static SortedMap<String,CompressorStreamProvider> findAvailableCompressorOutputStreamProviders()
The map returned by this method will have one entry for each provider for which support is available in the current Java virtual machine. If two or more supported provider have the same name then the resulting map will contain just one of them; which one it will contain is not specified.
The invocation of this method, and the subsequent use of the resulting map, may cause time-consuming disk or network I/O operations to occur. This method is provided for applications that need to enumerate all of the available providers, for example to allow user provider selection.
This method may return different results at different times if new providers are dynamically made available to the current Java virtual machine.
public static String getDeflate()
public static String getDeflate64()
DEFLATE64
public static String getPack200()
public static CompressorStreamFactory getSingleton()
public static String getSnappyFramed()
public static String getSnappyRaw()
public static String getLZ4Framed()
public static String getLZ4Block()
public static String getZstandard()
public static String detect(InputStream inputStream) throws CompressorException
inputStream
- input streamCompressorException
- if no compressor stream type was detected
or if something else went wrongIllegalArgumentException
- if stream is null or does not support markpublic CompressorInputStream createCompressorInputStream(InputStream in) throws CompressorException
in
- the input streamCompressorException
- if the compressor name is not knownIllegalArgumentException
- if the stream is null or does not support markpublic CompressorInputStream createCompressorInputStream(String name, InputStream in) throws CompressorException
name
- of the compressor, i.e. "gz", "bzip2",
"xz", "lzma", "pack200",
"snappy-raw", "snappy-framed", "z",
"lz4-block", "lz4-framed", "zstd",
"deflate64"
or "deflate"in
- the input streamCompressorException
- if the compressor name is not known or not available,
or if there's an IOException or MemoryLimitException thrown
during initializationIllegalArgumentException
- if the name or input stream is nullpublic CompressorInputStream createCompressorInputStream(String name, InputStream in, boolean actualDecompressConcatenated) throws CompressorException
CompressorStreamProvider
createCompressorInputStream
in interface CompressorStreamProvider
name
- of the compressor, i.e.
"gz",
"bzip2",
"xz",
"lzma",
"pack200",
"snappy-raw",
"snappy-framed",
"z"
or
"deflate"in
- the input streamactualDecompressConcatenated
- if true, decompress until the end of the input; if false, stop
after the first stream and leave the input position to point
to the next byte after the stream. This setting applies to the
gzip, bzip2 and xz formats only.CompressorException
- if the compressor name is not knownpublic CompressorOutputStream createCompressorOutputStream(String name, OutputStream out) throws CompressorException
createCompressorOutputStream
in interface CompressorStreamProvider
name
- the compressor name, i.e. "gz", "bzip2",
"xz", "pack200", "snappy-framed",
"lz4-block", "lz4-framed", "zstd"
or "deflate"out
- the output streamCompressorException
- if the archiver name is not knownIllegalArgumentException
- if the archiver name or stream is nullpublic SortedMap<String,CompressorStreamProvider> getCompressorInputStreamProviders()
public SortedMap<String,CompressorStreamProvider> getCompressorOutputStreamProviders()
public Boolean getDecompressUntilEOF()
public Set<String> getInputStreamCompressorNames()
CompressorStreamProvider
getInputStreamCompressorNames
in interface CompressorStreamProvider
public Set<String> getOutputStreamCompressorNames()
CompressorStreamProvider
getOutputStreamCompressorNames
in interface CompressorStreamProvider
@Deprecated public void setDecompressConcatenated(boolean decompressConcatenated)
CompressorStreamFactory(boolean)
constructor insteadThis setting applies to the gzip, bzip2 and xz formats only.
decompressConcatenated
- if true, decompress until the end of the input; if false, stop
after the first stream and leave the input position to point
to the next byte after the streamIllegalStateException
- if the constructor CompressorStreamFactory(boolean)
was used to create the factoryCopyright © 2020 The Apache Software Foundation. All rights reserved.