Class JBZipFile


  • public class JBZipFile
    extends Object
    Replacement for 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:

    • There is no getName method.
    • entries has been renamed to getEntries.
    • getEntries and getEntry return org.apache.tools.zip.ZipEntry instances.
    • close is allowed to throw IOException.
    • Constructor Detail

      • JBZipFile

        public JBZipFile​(File f)
                  throws IOException
        Opens the given file for reading, assuming the platform's native encoding for file names.
        Parameters:
        f - the archive.
        Throws:
        IOException - if an error occurs while reading the file.
      • JBZipFile

        public JBZipFile​(String name)
                  throws IOException
        Opens the given file for reading, assuming the platform's native encoding for file names.
        Parameters:
        name - name of the archive.
        Throws:
        IOException - if an error occurs while reading the file.
      • JBZipFile

        public JBZipFile​(String name,
                         String encoding)
                  throws IOException
        Opens the given file for reading, assuming the specified encoding for file names.
        Parameters:
        name - name of the archive.
        encoding - the encoding to use for file names
        Throws:
        IOException - if an error occurs while reading the file.
      • JBZipFile

        public JBZipFile​(File f,
                         String encoding)
                  throws IOException
        Opens the given file for reading, assuming the specified encoding for file names.
        Parameters:
        f - the archive.
        encoding - the encoding to use for file names
        Throws:
        IOException - if an error occurs while reading the file.
    • Method Detail

      • getEncoding

        public String getEncoding()
        The encoding to use for filenames and the file comment.
        Returns:
        null if using the platform's default character encoding.
      • close

        public void close()
                   throws IOException
        Closes the archive.
        Throws:
        IOException - if an error occurs closing the archive.
      • getEntry

        public JBZipEntry getEntry​(String name)
        Returns a named entry - or null if no entry by that name exists.
        Parameters:
        name - name of the entry.
        Returns:
        the ZipEntry corresponding to the given name - or null if not present.