TrueZIP 6.8.2

de.schlichtherle.util.zip
Class ZipFile

java.lang.Object
  extended by de.schlichtherle.util.zip.BasicZipFile
      extended by de.schlichtherle.util.zip.ZipFile

public class ZipFile
extends BasicZipFile

Drop-in replacement for java.util.zip.ZipFile.

Where the constructors of this class accept a charset parameter, this is used to decode comments and entry names in the ZIP file. However, if an entry has bit 11 set in its General Purpose Bit Flag, then this parameter is ignored and "UTF-8" is used for this entry. This is in accordance to Appendix D of PKWARE's ZIP File Format Specification, version 6.3.0 and later.

This class is able to skip a preamble like the one found in self extracting archives.

Note that the entries returned by this class are instances of de.schlichtherle.util.zip.ZipEntry instead of java.util.zip.ZipEntry.

This class is thread-safe.

Version:
$Id: ZipFile.java 5e709f50671d 2010/11/05 11:52:07 christian $
Author:
Christian Schlichtherle
See Also:
ZipOutputStream

Field Summary
private  String name
           
 
Fields inherited from class de.schlichtherle.util.zip.BasicZipFile
DEFAULT_CHARSET
 
Constructor Summary
ZipFile(File file)
          Equivalent to ZipFile(file, DEFAULT_CHARSET, true, false)
ZipFile(File file, String charset)
          Equivalent to ZipFile(file, charset, true, false)
ZipFile(File file, String charset, boolean preambled, boolean postambled)
          Opens the given File for reading its entries.
ZipFile(ReadOnlyFile rof)
          Equivalent to ZipFile(rof, DEFAULT_CHARSET, true, false)
ZipFile(ReadOnlyFile rof, String charset)
          Equivalent to ZipFile(rof, charset, true, false)
ZipFile(ReadOnlyFile rof, String charset, boolean preambled, boolean postambled)
          Opens the given ReadOnlyFile for reading its entries.
ZipFile(String name)
          Equivalent to ZipFile(name, DEFAULT_CHARSET, true, false)
ZipFile(String name, String charset)
          Equivalent to ZipFile(name, charset, true, false)
ZipFile(String name, String charset, boolean preambled, boolean postambled)
          Opens the ZIP file identified by the given path name for reading its entries.
 
Method Summary
 boolean busy()
          Returns true if and only if some input streams are open to read from this ZIP compatible file.
 void close()
          Closes the file.
 Enumeration entries()
          Enumerates clones of all entries in this ZIP file.
 ZipEntry getEntry(String name)
          Returns a clone of the ZipEntry for the given name or null if no entry with that name exists.
protected  InputStream getInputStream(String name, boolean check, boolean inflate)
          Returns an InputStream for reading the inflated or deflated data of the given entry.
 String getName()
          Returns the path name of the ZIP file or null if this object was created with a ReadOnlyFile.
 InputStream getPostambleInputStream()
          Returns an BasicZipFile.PooledInflaterInputStream to read the postamble of this ZIP compatible file.
 InputStream getPreambleInputStream()
          Returns an BasicZipFile.PooledInflaterInputStream to read the preamble of this ZIP compatible file.
 
Methods inherited from class de.schlichtherle.util.zip.BasicZipFile
createReadOnlyFile, createZipEntry, getCharset, getCheckedInputStream, getCheckedInputStream, getComment, getInputStream, getInputStream, getInputStream, getInputStream, getPostambleLength, getPreambleLength, length, offsetsConsiderPreamble, size
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

name

private final String name
Constructor Detail

ZipFile

public ZipFile(String name)
        throws NullPointerException,
               FileNotFoundException,
               ZipException,
               IOException
Equivalent to ZipFile(name, DEFAULT_CHARSET, true, false)

Throws:
NullPointerException
FileNotFoundException
ZipException
IOException

ZipFile

public ZipFile(String name,
               String charset)
        throws NullPointerException,
               UnsupportedEncodingException,
               FileNotFoundException,
               ZipException,
               IOException
Equivalent to ZipFile(name, charset, true, false)

Throws:
NullPointerException
UnsupportedEncodingException
FileNotFoundException
ZipException
IOException

ZipFile

public ZipFile(String name,
               String charset,
               boolean preambled,
               boolean postambled)
        throws NullPointerException,
               UnsupportedEncodingException,
               FileNotFoundException,
               ZipException,
               IOException
Opens the ZIP file identified by the given path name for reading its entries.

Parameters:
name - The path name of the file.
charset - The charset to use for decoding entry names and ZIP file comment.
preambled - If this is true, then the ZIP file may have a preamble. Otherwise, the ZIP file must start with either a Local File Header (LFH) signature or an End Of Central Directory (EOCD) Header, causing this constructor to fail if the file is actually a false positive ZIP file, i.e. not compatible to the ZIP File Format Specification. This may be useful to read Self Extracting ZIP files (SFX), which usually contain the application code required for extraction in the preamble.
postambled - If this is true, then the ZIP file may have a postamble of arbitrary length. Otherwise, the ZIP file must not have a postamble which exceeds 64KB size, including the End Of Central Directory record (i.e. including the ZIP file comment), causing this constructor to fail if the file is actually a false positive ZIP file, i.e. not compatible to the ZIP File Format Specification. This may be useful to read Self Extracting ZIP files (SFX) with large postambles.
Throws:
NullPointerException - If name or charset is null.
UnsupportedEncodingException - If charset is not supported by this JVM.
FileNotFoundException - If the file cannot get opened for reading.
ZipException - If the file is not compatible with the ZIP File Format Specification.
IOException - On any other I/O related issue.

ZipFile

public ZipFile(File file)
        throws NullPointerException,
               FileNotFoundException,
               ZipException,
               IOException
Equivalent to ZipFile(file, DEFAULT_CHARSET, true, false)

Throws:
NullPointerException
FileNotFoundException
ZipException
IOException

ZipFile

public ZipFile(File file,
               String charset)
        throws NullPointerException,
               UnsupportedEncodingException,
               FileNotFoundException,
               ZipException,
               IOException
Equivalent to ZipFile(file, charset, true, false)

Throws:
NullPointerException
UnsupportedEncodingException
FileNotFoundException
ZipException
IOException

ZipFile

public ZipFile(File file,
               String charset,
               boolean preambled,
               boolean postambled)
        throws NullPointerException,
               UnsupportedEncodingException,
               FileNotFoundException,
               ZipException,
               IOException
Opens the given File for reading its entries.

Parameters:
file - The file.
charset - The charset to use for decoding entry names and ZIP file comment.
preambled - If this is true, then the ZIP file may have a preamble. Otherwise, the ZIP file must start with either a Local File Header (LFH) signature or an End Of Central Directory (EOCD) Header, causing this constructor to fail if the file is actually a false positive ZIP file, i.e. not compatible to the ZIP File Format Specification. This may be useful to read Self Extracting ZIP files (SFX), which usually contain the application code required for extraction in the preamble.
postambled - If this is true, then the ZIP file may have a postamble of arbitrary length. Otherwise, the ZIP file must not have a postamble which exceeds 64KB size, including the End Of Central Directory record (i.e. including the ZIP file comment), causing this constructor to fail if the file is actually a false positive ZIP file, i.e. not compatible to the ZIP File Format Specification. This may be useful to read Self Extracting ZIP files (SFX) with large postambles.
Throws:
NullPointerException - If file or charset is null.
UnsupportedEncodingException - If charset is not supported by this JVM.
FileNotFoundException - If the file cannot get opened for reading.
ZipException - If the file is not compatible with the ZIP File Format Specification.
IOException - On any other I/O related issue.

ZipFile

public ZipFile(ReadOnlyFile rof)
        throws NullPointerException,
               FileNotFoundException,
               ZipException,
               IOException
Equivalent to ZipFile(rof, DEFAULT_CHARSET, true, false)

Throws:
NullPointerException
FileNotFoundException
ZipException
IOException

ZipFile

public ZipFile(ReadOnlyFile rof,
               String charset)
        throws NullPointerException,
               UnsupportedEncodingException,
               FileNotFoundException,
               ZipException,
               IOException
Equivalent to ZipFile(rof, charset, true, false)

Throws:
NullPointerException
UnsupportedEncodingException
FileNotFoundException
ZipException
IOException

ZipFile

public ZipFile(ReadOnlyFile rof,
               String charset,
               boolean preambled,
               boolean postambled)
        throws NullPointerException,
               UnsupportedEncodingException,
               FileNotFoundException,
               ZipException,
               IOException
Opens the given ReadOnlyFile for reading its entries.

Parameters:
rof - The random access read only file.
charset - The charset to use for decoding entry names and ZIP file comment.
preambled - If this is true, then the ZIP file may have a preamble. Otherwise, the ZIP file must start with either a Local File Header (LFH) signature or an End Of Central Directory (EOCD) Header, causing this constructor to fail if the file is actually a false positive ZIP file, i.e. not compatible to the ZIP File Format Specification. This may be useful to read Self Extracting ZIP files (SFX), which usually contain the application code required for extraction in the preamble.
postambled - If this is true, then the ZIP file may have a postamble of arbitrary length. Otherwise, the ZIP file must not have a postamble which exceeds 64KB size, including the End Of Central Directory record (i.e. including the ZIP file comment), causing this constructor to fail if the file is actually a false positive ZIP file, i.e. not compatible to the ZIP File Format Specification. This may be useful to read Self Extracting ZIP files (SFX) with large postambles.
Throws:
NullPointerException - If rof or charset is null.
UnsupportedEncodingException - If charset is not supported by this JVM.
FileNotFoundException - If the file cannot get opened for reading.
ZipException - If the file is not compatible with the ZIP File Format Specification.
IOException - On any other I/O related issue.
Method Detail

getName

public String getName()
Returns the path name of the ZIP file or null if this object was created with a ReadOnlyFile.

Since:
TrueZIP 6.8

entries

public Enumeration entries()
Enumerates clones of all entries in this ZIP file.

Overrides:
entries in class BasicZipFile

getEntry

public ZipEntry getEntry(String name)
Returns a clone of the ZipEntry for the given name or null if no entry with that name exists.

Overrides:
getEntry in class BasicZipFile
Parameters:
name - Name of the ZIP entry.

getPreambleInputStream

public InputStream getPreambleInputStream()
                                   throws IOException
Description copied from class: BasicZipFile
Returns an BasicZipFile.PooledInflaterInputStream to read the preamble of this ZIP compatible file.

Note that the returned stream is a lightweight stream, i.e. there is no external resource such as a ReadOnlyFile allocated for it. Instead, all streams returned by this method share the underlying ReadOnlyFile of this ZipFile. This allows to close this object (and hence the underlying ReadOnlyFile) without cooperation of the returned streams, which is important if the client application wants to work on the underlying file again (e.g. update or delete it).

Overrides:
getPreambleInputStream in class BasicZipFile
Throws:
ZipException - If this ZIP file has been closed.
IOException

getPostambleInputStream

public InputStream getPostambleInputStream()
                                    throws IOException
Description copied from class: BasicZipFile
Returns an BasicZipFile.PooledInflaterInputStream to read the postamble of this ZIP compatible file.

Note that the returned stream is a lightweight stream, i.e. there is no external resource such as a ReadOnlyFile allocated for it. Instead, all streams returned by this method share the underlying ReadOnlyFile of this ZipFile. This allows to close this object (and hence the underlying ReadOnlyFile) without cooperation of the returned streams, which is important if the client application wants to work on the underlying file again (e.g. update or delete it).

Overrides:
getPostambleInputStream in class BasicZipFile
Throws:
ZipException - If this ZIP file has been closed.
IOException

busy

public boolean busy()
Description copied from class: BasicZipFile
Returns true if and only if some input streams are open to read from this ZIP compatible file.

Overrides:
busy in class BasicZipFile

getInputStream

protected InputStream getInputStream(String name,
                                     boolean check,
                                     boolean inflate)
                              throws IOException
Description copied from class: BasicZipFile
Returns an InputStream for reading the inflated or deflated data of the given entry.

If the BasicZipFile.close() method is called on this instance, all input streams returned by this method are closed, too.

Overrides:
getInputStream in class BasicZipFile
Parameters:
name - The name of the entry to get the stream for - may not be null!
check - Whether or not the entry's CRC-32 value is checked. If and only if this parameter is true, two additional checks are performed for the ZIP entry:
  1. All entry headers are checked to have consistent declarations of the CRC-32 value for the inflated entry data.
  2. When calling BasicZipFile.PooledInflaterInputStream.close() on the returned entry stream, the CRC-32 value computed from the inflated entry data is checked against the declared CRC-32 values. This is independent from the inflate parameter.
If any of these checks fail, a CRC32Exception is thrown.

This parameter should be false for most applications, and is the default for the sibling of this class in java.util.zip.ZipFile.

inflate - Whether or not the entry data should be inflated. If false, the entry data is not inflated, even if the entry data is deflated. This parameter should be true for most applications.
Returns:
A stream to read the entry data from or null if the entry does not exist.
Throws:
CRC32Exception - If the declared CRC-32 values of the inflated entry data are inconsistent across the entry headers.
ZipException - If this file is not compatible to the ZIP File Format Specification.
IOException - If the entry cannot get read from this ZipFile.

close

public void close()
           throws IOException
Description copied from class: BasicZipFile
Closes the file. This closes any open input streams reading from this ZIP file.

Overrides:
close in class BasicZipFile
Throws:
IOException - if an error occurs closing the file.

TrueZIP 6.8.2

Copyright © 2005-2011 Schlichtherle IT Services. All Rights Reserved.