public class ZipFile extends Object
java.util.ZipFile
.
This class adds support for file name encodings other than UTF-8
(which is required to work on ZIP files created by native zip tools
and is able to skip a preamble like the one found in self
extracting archives. Furthermore it returns instances of
org.apache.commons.compress.archivers.zip.ZipArchiveEntry
instead of java.util.zip.ZipEntry
.
It doesn't extend java.util.zip.ZipFile
as it would
have to reimplement all methods anyway. Like
java.util.ZipFile
, it uses RandomAccessFile under the
covers and supports compressed and uncompressed entries. As of
Apache Commons Compress it also transparently supports Zip64
extensions and thus individual entries and archives larger than 4
GB or with more than 65536 entries.
The method signatures mimic the ones of
java.util.zip.ZipFile
, with a couple of exceptions:
org.apache.commons.compress.archivers.zip.ZipArchiveEntry
instances.Constructor and Description |
---|
ZipFile(File f)
Opens the given file for reading, assuming "UTF8" for file names.
|
ZipFile(File f,
String encoding)
Opens the given file for reading, assuming the specified
encoding for file names and scanning for unicode extra fields.
|
ZipFile(File f,
String encoding,
boolean useUnicodeExtraFields)
Opens the given file for reading, assuming the specified
encoding for file names.
|
ZipFile(String name)
Opens the given file for reading, assuming "UTF8".
|
ZipFile(String name,
String encoding)
Opens the given file for reading, assuming the specified
encoding for file names, scanning unicode extra fields.
|
Modifier and Type | Method and Description |
---|---|
boolean |
canReadEntryData(ZipArchiveEntry ze)
Whether this class is able to read the given entry.
|
void |
close()
Closes the archive.
|
static void |
closeQuietly(ZipFile zipfile)
close a zipfile quietly; throw no io fault, do nothing
on a null parameter
|
protected void |
finalize()
Ensures that the close method of this zipfile is called when
there are no more references to it.
|
String |
getEncoding()
The encoding to use for filenames and the file comment.
|
Enumeration<ZipArchiveEntry> |
getEntries()
Returns all entries.
|
Enumeration<ZipArchiveEntry> |
getEntriesInPhysicalOrder()
Returns all entries in physical order.
|
ZipArchiveEntry |
getEntry(String name)
Returns a named entry - or
null if no entry by
that name exists. |
InputStream |
getInputStream(ZipArchiveEntry ze)
Returns an InputStream for reading the contents of the given entry.
|
public ZipFile(File f) throws IOException
f
- the archive.IOException
- if an error occurs while reading the file.public ZipFile(String name) throws IOException
name
- name of the archive.IOException
- if an error occurs while reading the file.public ZipFile(String name, String encoding) throws IOException
name
- name of the archive.encoding
- the encoding to use for file names, use null
for the platform's default encodingIOException
- if an error occurs while reading the file.public ZipFile(File f, String encoding) throws IOException
f
- the archive.encoding
- the encoding to use for file names, use null
for the platform's default encodingIOException
- if an error occurs while reading the file.public ZipFile(File f, String encoding, boolean useUnicodeExtraFields) throws IOException
f
- the archive.encoding
- the encoding to use for file names, use null
for the platform's default encodinguseUnicodeExtraFields
- whether to use InfoZIP Unicode
Extra Fields (if present) to set the file names.IOException
- if an error occurs while reading the file.public String getEncoding()
public void close() throws IOException
IOException
- if an error occurs closing the archive.public static void closeQuietly(ZipFile zipfile)
zipfile
- file to close, can be nullpublic Enumeration<ZipArchiveEntry> getEntries()
Entries will be returned in the same order they appear within the archive's central directory.
ZipArchiveEntry
instancespublic Enumeration<ZipArchiveEntry> getEntriesInPhysicalOrder()
Entries will be returned in the same order their contents appear within the archive.
ZipArchiveEntry
instancespublic ZipArchiveEntry getEntry(String name)
null
if no entry by
that name exists.name
- name of the entry.null
if not present.public boolean canReadEntryData(ZipArchiveEntry ze)
May return false if it is set up to use encryption or a compression method that hasn't been implemented yet.
public InputStream getInputStream(ZipArchiveEntry ze) throws IOException, ZipException
ze
- the entry to get the stream for.IOException
- if unable to create an input stream from the zipentyZipException
- if the zipentry uses an unsupported featureCopyright © 2012 Apache Software Foundation. All Rights Reserved.