Class ArchiveStreamFactory
- All Implemented Interfaces:
ArchiveStreamProvider
final OutputStream out = Files.newOutputStream(output.toPath()); ArchiveOutputStream os = new ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.ZIP, out); os.putArchiveEntry(new ZipArchiveEntry("testdata/test1.xml")); IOUtils.copy(Files.newInputStream(file1.toPath()), os); os.closeArchiveEntry(); os.putArchiveEntry(new ZipArchiveEntry("testdata/test2.xml")); IOUtils.copy(Files.newInputStream(file2.toPath()), os); os.closeArchiveEntry(); os.close();Decompressing a ZIP-File:
final InputStream is = Files.newInputStream(input.toPath()); ArchiveInputStream in = new ArchiveStreamFactory().createArchiveInputStream(ArchiveStreamFactory.ZIP, is); ZipArchiveEntry entry = (ZipArchiveEntry) in.getNextEntry(); OutputStream out = Files.newOutputStream(dir.toPath().resolve(entry.getName())); IOUtils.copy(in, out); out.close(); in.close();
- This class is immutable
- provided that the deprecated method setEntryEncoding is not used.
- This class is thread-safe
- even if the deprecated method setEntryEncoding is used
-
Field Summary
Modifier and TypeFieldDescriptionstatic final String
Constant (value "apk") used to identify the APK archive format.static final String
Constant (value "apkm") used to identify the APKM archive format.static final String
Constant (value "apks") used to identify the APKS archive format.static final String
Constant (value "ar") used to identify the AR archive format.static final String
Constant (value "arj") used to identify the ARJ archive format.static final String
Constant (value "cpio") used to identify the CPIO archive format.static final ArchiveStreamFactory
The singleton instance using the platform default encoding.static final String
Constant (value "dump") used to identify the UNIX DUMP archive format.static final String
Constant (value "jar") used to identify the JAR archive format.static final String
Constant (value "7z") used to identify the 7z archive format.static final String
Constant used to identify the TAR archive format.static final String
Constant (value "xapk") used to identify the XAPK archive format.static final String
Constant (value "zip") used to identify the ZIP archive format. -
Constructor Summary
ConstructorDescriptionConstructs an instance using the platform default encoding.ArchiveStreamFactory
(String entryEncoding) Constructs an instance using the specified encoding. -
Method Summary
Modifier and TypeMethodDescription<I extends ArchiveInputStream<? extends ArchiveEntry>>
ICreates an archive input stream from an input stream, autodetecting the archive type from the first few bytes of the stream.<I extends ArchiveInputStream<? extends ArchiveEntry>>
IcreateArchiveInputStream
(String archiverName, InputStream in) Creates an archive input stream from an archiver name and an input stream.<I extends ArchiveInputStream<? extends ArchiveEntry>>
IcreateArchiveInputStream
(String archiverName, InputStream in, String actualEncoding) Creates an archive input stream from an archiver name and an input stream.<O extends ArchiveOutputStream<? extends ArchiveEntry>>
OcreateArchiveOutputStream
(String archiverName, OutputStream out) Creates an archive output stream from an archiver name and an output stream.<O extends ArchiveOutputStream<? extends ArchiveEntry>>
OcreateArchiveOutputStream
(String archiverName, OutputStream out, String actualEncoding) Creates an archive output stream from an archiver name and an output stream.static String
detect
(InputStream in) Try to determine the type of Archiverstatic SortedMap<String,
ArchiveStreamProvider> Constructs a new sorted map from input stream provider names to provider objects.static SortedMap<String,
ArchiveStreamProvider> Constructs a new sorted map from output stream provider names to provider objects.Gets the encoding to use for arj, jar, ZIP, dump, cpio and tar files, or null for the archiver default.Gets all the input stream archive names for this providerGets all the output stream archive names for this providervoid
setEntryEncoding
(String entryEncoding) Deprecated.
-
Field Details
-
DEFAULT
The singleton instance using the platform default encoding.- Since:
- 1.21
-
APK
Constant (value "apk") used to identify the APK archive format.APK file extensions are .apk, .xapk, .apks, .apkm
- Since:
- 1.22
- See Also:
-
XAPK
Constant (value "xapk") used to identify the XAPK archive format.APK file extensions are .apk, .xapk, .apks, .apkm
- Since:
- 1.22
- See Also:
-
APKS
Constant (value "apks") used to identify the APKS archive format.APK file extensions are .apk, .xapk, .apks, .apkm
- Since:
- 1.22
- See Also:
-
APKM
Constant (value "apkm") used to identify the APKM archive format.APK file extensions are .apk, .xapk, .apks, .apkm
- Since:
- 1.22
- See Also:
-
AR
Constant (value "ar") used to identify the AR archive format.- Since:
- 1.1
- See Also:
-
ARJ
Constant (value "arj") used to identify the ARJ archive format. Not supported as an output stream type.- Since:
- 1.6
- See Also:
-
CPIO
Constant (value "cpio") used to identify the CPIO archive format.- Since:
- 1.1
- See Also:
-
DUMP
Constant (value "dump") used to identify the UNIX DUMP archive format. Not supported as an output stream type.- Since:
- 1.3
- See Also:
-
JAR
Constant (value "jar") used to identify the JAR archive format.- Since:
- 1.1
- See Also:
-
TAR
Constant used to identify the TAR archive format.- Since:
- 1.1
- See Also:
-
ZIP
Constant (value "zip") used to identify the ZIP archive format.- Since:
- 1.1
- See Also:
-
SEVEN_Z
Constant (value "7z") used to identify the 7z archive format.- Since:
- 1.8
- See Also:
-
-
Constructor Details
-
ArchiveStreamFactory
public ArchiveStreamFactory()Constructs an instance using the platform default encoding. -
ArchiveStreamFactory
Constructs an instance using the specified encoding.- Parameters:
entryEncoding
- the encoding to be used.- Since:
- 1.10
-
-
Method Details
-
detect
Try to determine the type of Archiver- Parameters:
in
- input stream- Returns:
- type of archiver if found
- Throws:
ArchiveException
- if an archiver cannot be detected in the stream- Since:
- 1.14
-
findAvailableArchiveInputStreamProviders
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
-
findAvailableArchiveOutputStreamProviders
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
-
createArchiveInputStream
public <I extends ArchiveInputStream<? extends ArchiveEntry>> I createArchiveInputStream(InputStream in) throws ArchiveException Creates an archive input stream from an input stream, autodetecting the archive type from the first few bytes of the stream. The InputStream must support marks, like BufferedInputStream.- Type Parameters:
I
- TheArchiveInputStream
type.- Parameters:
in
- the input stream- Returns:
- the archive input stream
- Throws:
ArchiveException
- if the archiver name is not knownStreamingNotSupportedException
- if the format cannot be read from a streamIllegalArgumentException
- if the stream is null or does not support mark
-
createArchiveInputStream
public <I extends ArchiveInputStream<? extends ArchiveEntry>> I createArchiveInputStream(String archiverName, InputStream in) throws ArchiveException Creates an archive input stream from an archiver name and an input stream.- Type Parameters:
I
- TheArchiveInputStream
type.- Parameters:
archiverName
- the archive name, i.e. "ar", "arj", "zip", "tar", "jar", "cpio", "dump" or "7z"in
- the input stream- Returns:
- the archive input stream
- Throws:
ArchiveException
- if the archiver name is not knownStreamingNotSupportedException
- if the format cannot be read from a streamIllegalArgumentException
- if the archiver name or stream is null
-
createArchiveInputStream
public <I extends ArchiveInputStream<? extends ArchiveEntry>> I createArchiveInputStream(String archiverName, InputStream in, String actualEncoding) throws ArchiveException Description copied from interface:ArchiveStreamProvider
Creates an archive input stream from an archiver name and an input stream.- Specified by:
createArchiveInputStream
in interfaceArchiveStreamProvider
- Type Parameters:
I
- TheArchiveInputStream
type.- Parameters:
archiverName
- the archiver name, i.e. "ar", "arj", "zip", "tar", "jar", "cpio", "dump" or "7z"in
- the input streamactualEncoding
- encoding name or null for the default- Returns:
- the archive input stream
- Throws:
ArchiveException
- if the archiver name is not knownStreamingNotSupportedException
- if the format cannot be read from a stream
-
createArchiveOutputStream
public <O extends ArchiveOutputStream<? extends ArchiveEntry>> O createArchiveOutputStream(String archiverName, OutputStream out) throws ArchiveException Creates an archive output stream from an archiver name and an output stream.- Type Parameters:
O
- TheArchiveOutputStream
type.- Parameters:
archiverName
- the archive name, i.e. "ar", "zip", "tar", "jar" or "cpio"out
- the output stream- Returns:
- the archive output stream
- Throws:
ArchiveException
- if the archiver name is not knownStreamingNotSupportedException
- if the format cannot be written to a streamIllegalArgumentException
- if the archiver name or stream is null
-
createArchiveOutputStream
public <O extends ArchiveOutputStream<? extends ArchiveEntry>> O createArchiveOutputStream(String archiverName, OutputStream out, String actualEncoding) throws ArchiveException Description copied from interface:ArchiveStreamProvider
Creates an archive output stream from an archiver name and an output stream.- Specified by:
createArchiveOutputStream
in interfaceArchiveStreamProvider
- Type Parameters:
O
- TheArchiveInputStream
type.- Parameters:
archiverName
- the archiver name, i.e. "ar", "zip", "tar", "jar" or "cpio"out
- the output streamactualEncoding
- encoding name or null for the default- Returns:
- the archive output stream
- Throws:
ArchiveException
- if the archiver name is not knownStreamingNotSupportedException
- if the format cannot be written to a stream
-
getArchiveInputStreamProviders
-
getArchiveOutputStreamProviders
-
getEntryEncoding
Gets the encoding to use for arj, jar, ZIP, dump, cpio and tar files, or null for the archiver default.- Returns:
- entry encoding, or null for the archiver default
- Since:
- 1.5
-
getInputStreamArchiveNames
Description copied from interface:ArchiveStreamProvider
Gets all the input stream archive names for this provider- Specified by:
getInputStreamArchiveNames
in interfaceArchiveStreamProvider
- Returns:
- all the input archive names for this provider
-
getOutputStreamArchiveNames
Description copied from interface:ArchiveStreamProvider
Gets all the output stream archive names for this provider- Specified by:
getOutputStreamArchiveNames
in interfaceArchiveStreamProvider
- Returns:
- all the output archive names for this provider
-
setEntryEncoding
Deprecated.1.10 useArchiveStreamFactory(String)
to specify the encodingSets the encoding to use for arj, jar, ZIP, dump, cpio and tar files. Use null for the archiver default.- Parameters:
entryEncoding
- the entry encoding, null uses the archiver default.- Since:
- 1.5
-
ArchiveStreamFactory(String)
to specify the encoding