Class CompressorStreamFactory
- java.lang.Object
-
- org.apache.commons.compress.compressors.CompressorStreamFactory
-
- All Implemented Interfaces:
CompressorStreamProvider
public class CompressorStreamFactory extends java.lang.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();
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
BROTLI
Constant (value "br") used to identify the BROTLI compression algorithm.static java.lang.String
BZIP2
Constant (value "bzip2") used to identify the BZIP2 compression algorithm.static java.lang.String
DEFLATE
Constant (value "deflate") used to identify the Deflate compress method.static java.lang.String
DEFLATE64
Constant (value "deflate64") used to identify the Deflate64 compress method.static java.lang.String
GZIP
Constant (value "gz") used to identify the GZIP compression algorithm.static java.lang.String
LZ4_BLOCK
Constant (value "lz4-block") used to identify the block LZ4 compression method.static java.lang.String
LZ4_FRAMED
Constant (value "lz4-framed") used to identify the frame LZ4 compression method.static java.lang.String
LZMA
Constant (value "lzma") used to identify the LZMA compression method.static java.lang.String
PACK200
Constant (value "pack200") used to identify the PACK200 compression algorithm.static java.lang.String
SNAPPY_FRAMED
Constant (value "snappy-framed") used to identify the "framed" Snappy compression method.static java.lang.String
SNAPPY_RAW
Constant (value "snappy-raw") used to identify the "raw" Snappy compression method.static java.lang.String
XZ
Constant (value "xz") used to identify the XZ compression method.static java.lang.String
Z
Constant (value "z") used to identify the traditional Unix compress method.static java.lang.String
ZSTANDARD
Constant (value "zstd") used to identify the Zstandard compression algorithm.
-
Constructor Summary
Constructors Constructor 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.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description CompressorInputStream
createCompressorInputStream(java.io.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(java.lang.String name, java.io.InputStream in)
Creates a compressor input stream from a compressor name and an input stream.CompressorInputStream
createCompressorInputStream(java.lang.String name, java.io.InputStream in, boolean actualDecompressConcatenated)
Creates a compressor input stream from a compressor name and an input stream.CompressorOutputStream
createCompressorOutputStream(java.lang.String name, java.io.OutputStream out)
Creates an compressor output stream from an compressor name and an output stream.static java.lang.String
detect(java.io.InputStream inputStream)
Try to detect the type of compressor stream.static java.util.SortedMap<java.lang.String,CompressorStreamProvider>
findAvailableCompressorInputStreamProviders()
Constructs a new sorted map from input stream provider names to provider objects.static java.util.SortedMap<java.lang.String,CompressorStreamProvider>
findAvailableCompressorOutputStreamProviders()
Constructs a new sorted map from output stream provider names to provider objects.static java.lang.String
getBrotli()
static java.lang.String
getBzip2()
java.util.SortedMap<java.lang.String,CompressorStreamProvider>
getCompressorInputStreamProviders()
java.util.SortedMap<java.lang.String,CompressorStreamProvider>
getCompressorOutputStreamProviders()
java.lang.Boolean
getDecompressUntilEOF()
static java.lang.String
getDeflate()
static java.lang.String
getDeflate64()
static java.lang.String
getGzip()
java.util.Set<java.lang.String>
getInputStreamCompressorNames()
Gets all the input stream compressor names for this providerstatic java.lang.String
getLZ4Block()
static java.lang.String
getLZ4Framed()
static java.lang.String
getLzma()
java.util.Set<java.lang.String>
getOutputStreamCompressorNames()
Gets all the output stream compressor names for this providerstatic java.lang.String
getPack200()
static CompressorStreamFactory
getSingleton()
static java.lang.String
getSnappyFramed()
static java.lang.String
getSnappyRaw()
static java.lang.String
getXz()
static java.lang.String
getZ()
static java.lang.String
getZstandard()
void
setDecompressConcatenated(boolean decompressConcatenated)
Deprecated.1.10 use theCompressorStreamFactory(boolean)
constructor instead
-
-
-
Field Detail
-
BROTLI
public static final java.lang.String BROTLI
Constant (value "br") used to identify the BROTLI compression algorithm.- Since:
- 1.14
- See Also:
- Constant Field Values
-
BZIP2
public static final java.lang.String BZIP2
Constant (value "bzip2") used to identify the BZIP2 compression algorithm.- Since:
- 1.1
- See Also:
- Constant Field Values
-
GZIP
public static final java.lang.String GZIP
Constant (value "gz") used to identify the GZIP compression algorithm.- Since:
- 1.1
- See Also:
- Constant Field Values
-
PACK200
public static final java.lang.String PACK200
Constant (value "pack200") used to identify the PACK200 compression algorithm.- Since:
- 1.3
- See Also:
- Constant Field Values
-
XZ
public static final java.lang.String XZ
Constant (value "xz") used to identify the XZ compression method.- Since:
- 1.4
- See Also:
- Constant Field Values
-
LZMA
public static final java.lang.String LZMA
Constant (value "lzma") used to identify the LZMA compression method.- Since:
- 1.6
- See Also:
- Constant Field Values
-
SNAPPY_FRAMED
public static final java.lang.String SNAPPY_FRAMED
Constant (value "snappy-framed") used to identify the "framed" Snappy compression method.- Since:
- 1.7
- See Also:
- Constant Field Values
-
SNAPPY_RAW
public static final java.lang.String SNAPPY_RAW
Constant (value "snappy-raw") used to identify the "raw" Snappy compression method. Not supported as an output stream type.- Since:
- 1.7
- See Also:
- Constant Field Values
-
Z
public static final java.lang.String Z
Constant (value "z") used to identify the traditional Unix compress method. Not supported as an output stream type.- Since:
- 1.7
- See Also:
- Constant Field Values
-
DEFLATE
public static final java.lang.String DEFLATE
Constant (value "deflate") used to identify the Deflate compress method.- Since:
- 1.9
- See Also:
- Constant Field Values
-
DEFLATE64
public static final java.lang.String DEFLATE64
Constant (value "deflate64") used to identify the Deflate64 compress method.- Since:
- 1.16
- See Also:
- Constant Field Values
-
LZ4_BLOCK
public static final java.lang.String LZ4_BLOCK
Constant (value "lz4-block") used to identify the block LZ4 compression method.- Since:
- 1.14
- See Also:
- Constant Field Values
-
LZ4_FRAMED
public static final java.lang.String LZ4_FRAMED
Constant (value "lz4-framed") used to identify the frame LZ4 compression method.- Since:
- 1.14
- See Also:
- Constant Field Values
-
ZSTANDARD
public static final java.lang.String ZSTANDARD
Constant (value "zstd") used to identify the Zstandard compression algorithm. Not supported as an output stream type.- Since:
- 1.16
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
CompressorStreamFactory
public CompressorStreamFactory()
Create an instance with the decompress Concatenated option set to false.
-
CompressorStreamFactory
public CompressorStreamFactory(boolean decompressUntilEOF)
Create an instance with the provided decompress Concatenated option.- Parameters:
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.- Since:
- 1.10
-
CompressorStreamFactory
public CompressorStreamFactory(boolean decompressUntilEOF, int memoryLimitInKb)
Create an instance with the provided decompress Concatenated option.- Parameters:
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.- Since:
- 1.14
-
-
Method Detail
-
detect
public static java.lang.String detect(java.io.InputStream inputStream) throws CompressorException
Try to detect the type of compressor stream.- Parameters:
inputStream
- input stream- Returns:
- type of compressor stream detected
- Throws:
CompressorException
- if no compressor stream type was detected or if something else went wrongjava.lang.IllegalArgumentException
- if stream is null or does not support mark- Since:
- 1.14
-
findAvailableCompressorInputStreamProviders
public static java.util.SortedMap<java.lang.String,CompressorStreamProvider> findAvailableCompressorInputStreamProviders()
Constructs a new sorted map from input stream provider names to provider objects.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.
- Returns:
- An immutable, map from names to provider objects
- Since:
- 1.13
-
findAvailableCompressorOutputStreamProviders
public static java.util.SortedMap<java.lang.String,CompressorStreamProvider> findAvailableCompressorOutputStreamProviders()
Constructs a new sorted map from output stream provider names to provider objects.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.
- Returns:
- An immutable, map from names to provider objects
- Since:
- 1.13
-
getBrotli
public static java.lang.String getBrotli()
-
getBzip2
public static java.lang.String getBzip2()
-
getDeflate
public static java.lang.String getDeflate()
-
getDeflate64
public static java.lang.String getDeflate64()
- Returns:
- the constant
DEFLATE64
- Since:
- 1.16
-
getGzip
public static java.lang.String getGzip()
-
getLZ4Block
public static java.lang.String getLZ4Block()
-
getLZ4Framed
public static java.lang.String getLZ4Framed()
-
getLzma
public static java.lang.String getLzma()
-
getPack200
public static java.lang.String getPack200()
-
getSingleton
public static CompressorStreamFactory getSingleton()
-
getSnappyFramed
public static java.lang.String getSnappyFramed()
-
getSnappyRaw
public static java.lang.String getSnappyRaw()
-
getXz
public static java.lang.String getXz()
-
getZ
public static java.lang.String getZ()
-
getZstandard
public static java.lang.String getZstandard()
-
createCompressorInputStream
public CompressorInputStream createCompressorInputStream(java.io.InputStream in) throws CompressorException
Create an compressor input stream from an input stream, autodetecting the compressor type from the first few bytes of the stream. The InputStream must support marks, like BufferedInputStream.- Parameters:
in
- the input stream- Returns:
- the compressor input stream
- Throws:
CompressorException
- if the compressor name is not knownjava.lang.IllegalArgumentException
- if the stream is null or does not support mark- Since:
- 1.1
-
createCompressorInputStream
public CompressorInputStream createCompressorInputStream(java.lang.String name, java.io.InputStream in) throws CompressorException
Creates a compressor input stream from a compressor name and an input stream.- Parameters:
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 stream- Returns:
- compressor input stream
- Throws:
CompressorException
- if the compressor name is not known or not available, or if there's an IOException or MemoryLimitException thrown during initializationjava.lang.IllegalArgumentException
- if the name or input stream is null
-
createCompressorInputStream
public CompressorInputStream createCompressorInputStream(java.lang.String name, java.io.InputStream in, boolean actualDecompressConcatenated) throws CompressorException
Description copied from interface:CompressorStreamProvider
Creates a compressor input stream from a compressor name and an input stream.- Specified by:
createCompressorInputStream
in interfaceCompressorStreamProvider
- Parameters:
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.- Returns:
- compressor input stream
- Throws:
CompressorException
- if the compressor name is not known
-
createCompressorOutputStream
public CompressorOutputStream createCompressorOutputStream(java.lang.String name, java.io.OutputStream out) throws CompressorException
Creates an compressor output stream from an compressor name and an output stream.- Specified by:
createCompressorOutputStream
in interfaceCompressorStreamProvider
- Parameters:
name
- the compressor name, i.e. "gz", "bzip2", "xz", "pack200", "snappy-framed", "lz4-block", "lz4-framed", "zstd" or "deflate"out
- the output stream- Returns:
- the compressor output stream
- Throws:
CompressorException
- if the archiver name is not knownjava.lang.IllegalArgumentException
- if the archiver name or stream is null
-
getCompressorInputStreamProviders
public java.util.SortedMap<java.lang.String,CompressorStreamProvider> getCompressorInputStreamProviders()
-
getCompressorOutputStreamProviders
public java.util.SortedMap<java.lang.String,CompressorStreamProvider> getCompressorOutputStreamProviders()
-
getDecompressUntilEOF
public java.lang.Boolean getDecompressUntilEOF()
-
getInputStreamCompressorNames
public java.util.Set<java.lang.String> getInputStreamCompressorNames()
Description copied from interface:CompressorStreamProvider
Gets all the input stream compressor names for this provider- Specified by:
getInputStreamCompressorNames
in interfaceCompressorStreamProvider
- Returns:
- all the input compressor names for this provider
-
getOutputStreamCompressorNames
public java.util.Set<java.lang.String> getOutputStreamCompressorNames()
Description copied from interface:CompressorStreamProvider
Gets all the output stream compressor names for this provider- Specified by:
getOutputStreamCompressorNames
in interfaceCompressorStreamProvider
- Returns:
- all the output compressor names for this provider
-
setDecompressConcatenated
@Deprecated public void setDecompressConcatenated(boolean decompressConcatenated)
Deprecated.1.10 use theCompressorStreamFactory(boolean)
constructor insteadWhether to decompress the full input or only the first stream in formats supporting multiple concatenated input streams.This setting applies to the gzip, bzip2 and xz formats only.
- Parameters:
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 stream- Throws:
java.lang.IllegalStateException
- if the constructorCompressorStreamFactory(boolean)
was used to create the factory- Since:
- 1.5
-
-