public class ZipFile extends Object implements ArchiveFile
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.tools.zip.ZipEntry
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.
The method signatures mimic the ones of
java.util.zip.ZipFile
, with a couple of exceptions:
org.apache.tools.zip.ZipEntry
instances.ArchiveFile.Entry
Constructor and Description |
---|
ZipFile(File f)
Opens the given file for reading, assuming the platform's
native encoding for file names.
|
ZipFile(File f,
String encoding)
Opens the given file for reading, assuming the specified
encoding for file names.
|
ZipFile(String name)
Opens the given file for reading, assuming the platform's
native encoding for file names.
|
ZipFile(String name,
String encoding)
Opens the given file for reading, assuming the specified
encoding for file names.
|
Modifier and Type | Method and Description |
---|---|
void |
close()
Closes the archive.
|
protected static Date |
fromDosTime(ZipLong l)
Convert a DOS date/time field to a Date object.
|
String |
getEncoding()
The encoding to use for filenames and the file comment.
|
Enumeration<ZipEntry> |
getEntries()
Returns all entries.
|
ZipEntry |
getEntry(String name)
Returns a named entry - or
null if no entry by
that name exists. |
InputStream |
getInputStream(ArchiveFile.Entry entry)
Returns an
InputStream with the given entries contents. |
InputStream |
getInputStream(ZipEntry ze)
Returns an InputStream for reading the contents of the given entry.
|
protected String |
getString(byte[] bytes)
Retrieve a String from the given bytes using the encoding set
for this ZipFile.
|
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 namesIOException
- 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 namesIOException
- 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 Enumeration<ZipEntry> getEntries()
getEntries
in interface ArchiveFile
ZipEntry
instancespublic ZipEntry getEntry(String name)
null
if no entry by
that name exists.name
- name of the entry.null
if not present.public InputStream getInputStream(ArchiveFile.Entry entry) throws IOException
ArchiveFile
InputStream
with the given entries contents.getInputStream
in interface ArchiveFile
IOException
public InputStream getInputStream(ZipEntry ze) throws IOException
ze
- the entry to get the stream for.IOException
protected static Date fromDosTime(ZipLong l)
l
- contains the stored DOS time.protected String getString(byte[] bytes) throws ZipException
bytes
- the byte array to transformZipException
- if the encoding cannot be recognized.Copyright © 2008-2012 Sonatype, Inc.. All Rights Reserved.