Module java.base
Package java.util.zip

Class ZipFile

  • All Implemented Interfaces:
    Closeable, AutoCloseable
    Direct Known Subclasses:
    JarFile


    public class ZipFile
    extends Object
    implements Closeable
    This class is used to read entries from a zip file.

    Unless otherwise noted, passing a null argument to a constructor or method in this class will cause a NullPointerException to be thrown.

    Since:
    1.1
    • Constructor Detail

      • ZipFile

        public ZipFile​(String name)
                throws IOException
        Opens a zip file for reading.

        First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

        The UTF-8 charset is used to decode the entry names and comments.

        Parameters:
        name - the name of the zip file
        Throws:
        ZipException - if a ZIP format error has occurred
        IOException - if an I/O error has occurred
        SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file.
        See Also:
        SecurityManager.checkRead(java.lang.String)
      • ZipFile

        public ZipFile​(File file,
                       int mode)
                throws IOException
        Opens a new ZipFile to read from the specified File object in the specified mode. The mode argument must be either OPEN_READ or OPEN_READ | OPEN_DELETE.

        First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

        The UTF-8 charset is used to decode the entry names and comments

        Parameters:
        file - the ZIP file to be opened for reading
        mode - the mode in which the file is to be opened
        Throws:
        ZipException - if a ZIP format error has occurred
        IOException - if an I/O error has occurred
        SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file, or its checkDelete method doesn't allow deleting the file when the OPEN_DELETE flag is set.
        IllegalArgumentException - if the mode argument is invalid
        Since:
        1.3
        See Also:
        SecurityManager.checkRead(java.lang.String)
      • ZipFile

        public ZipFile​(File file)
                throws ZipException,
                       IOException
        Opens a ZIP file for reading given the specified File object.

        The UTF-8 charset is used to decode the entry names and comments.

        Parameters:
        file - the ZIP file to be opened for reading
        Throws:
        ZipException - if a ZIP format error has occurred
        IOException - if an I/O error has occurred
      • ZipFile

        public ZipFile​(File file,
                       int mode,
                       Charset charset)
                throws IOException
        Opens a new ZipFile to read from the specified File object in the specified mode. The mode argument must be either OPEN_READ or OPEN_READ | OPEN_DELETE.

        First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

        Parameters:
        file - the ZIP file to be opened for reading
        mode - the mode in which the file is to be opened
        charset - the charset to be used to decode the ZIP entry name and comment that are not encoded by using UTF-8 encoding (indicated by entry's general purpose flag).
        Throws:
        ZipException - if a ZIP format error has occurred
        IOException - if an I/O error has occurred
        SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file,or its checkDelete method doesn't allow deleting the file when the OPEN_DELETE flag is set
        IllegalArgumentException - if the mode argument is invalid
        Since:
        1.7
        See Also:
        SecurityManager.checkRead(java.lang.String)
      • ZipFile

        public ZipFile​(String name,
                       Charset charset)
                throws IOException
        Opens a zip file for reading.

        First, if there is a security manager, its checkRead method is called with the name argument as its argument to ensure the read is allowed.

        Parameters:
        name - the name of the zip file
        charset - the charset to be used to decode the ZIP entry name and comment that are not encoded by using UTF-8 encoding (indicated by entry's general purpose flag).
        Throws:
        ZipException - if a ZIP format error has occurred
        IOException - if an I/O error has occurred
        SecurityException - if a security manager exists and its checkRead method doesn't allow read access to the file
        Since:
        1.7
        See Also:
        SecurityManager.checkRead(java.lang.String)
      • ZipFile

        public ZipFile​(File file,
                       Charset charset)
                throws IOException
        Opens a ZIP file for reading given the specified File object.
        Parameters:
        file - the ZIP file to be opened for reading
        charset - The charset to be used to decode the ZIP entry name and comment (ignored if the language encoding bit of the ZIP entry's general purpose bit flag is set).
        Throws:
        ZipException - if a ZIP format error has occurred
        IOException - if an I/O error has occurred
        Since:
        1.7
    • Method Detail

      • getComment

        public String getComment​()
        Returns the zip file comment, or null if none.
        Returns:
        the comment string for the zip file, or null if none
        Throws:
        IllegalStateException - if the zip file has been closed
        Since:
        1.7
      • getEntry

        public ZipEntry getEntry​(String name)
        Returns the zip file entry for the specified name, or null if not found.
        Parameters:
        name - the name of the entry
        Returns:
        the zip file entry, or null if not found
        Throws:
        IllegalStateException - if the zip file has been closed
      • getInputStream

        public InputStream getInputStream​(ZipEntry entry)
                                   throws IOException
        Returns an input stream for reading the contents of the specified zip file entry.

        Closing this ZIP file will, in turn, close all input streams that have been returned by invocations of this method.

        Parameters:
        entry - the zip file entry
        Returns:
        the input stream for reading the contents of the specified zip file entry.
        Throws:
        ZipException - if a ZIP format error has occurred
        IOException - if an I/O error has occurred
        IllegalStateException - if the zip file has been closed
      • getName

        public String getName​()
        Returns the path name of the ZIP file.
        Returns:
        the path name of the ZIP file
      • entries

        public Enumeration<? extends ZipEntry> entries​()
        Returns an enumeration of the ZIP file entries.
        Returns:
        an enumeration of the ZIP file entries
        Throws:
        IllegalStateException - if the zip file has been closed
      • stream

        public Stream<? extends ZipEntry> stream​()
        Returns an ordered Stream over the ZIP file entries. Entries appear in the Stream in the order they appear in the central directory of the ZIP file.
        Returns:
        an ordered Stream of entries in this ZIP file
        Throws:
        IllegalStateException - if the zip file has been closed
        Since:
        1.8
      • size

        public int size​()
        Returns the number of entries in the ZIP file.
        Returns:
        the number of entries in the ZIP file
        Throws:
        IllegalStateException - if the zip file has been closed
      • close

        public void close​()
                   throws IOException
        Closes the ZIP file.

        Closing this ZIP file will close all of the input streams previously returned by invocations of the getInputStream method.

        Specified by:
        close in interface AutoCloseable
        Specified by:
        close in interface Closeable
        Throws:
        IOException - if an I/O error has occurred
      • finalize

        @Deprecated(since="9")
        protected void finalize​()
                         throws IOException
        Deprecated. The finalize method has been deprecated. Subclasses that override finalize in order to perform cleanup should be modified to use alternative cleanup mechanisms and to remove the overriding finalize method. When overriding the finalize method, its implementation must explicitly ensure that super.finalize() is invoked as described in Object.finalize(). See the specification for Object.finalize() for further information about migration options.
        Ensures that the system resources held by this ZipFile object are released when there are no more references to it.

        Since the time when GC would invoke this method is undetermined, it is strongly recommended that applications invoke the close method as soon they have finished accessing this ZipFile. This will prevent holding up system resources for an undetermined length of time.

        Overrides:
        finalize in class Object
        Throws:
        IOException - if an I/O error has occurred
        See Also:
        close()