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.

    API Note:
    To release resources used by this ZipFile, the close() method should be called explicitly or by try-with-resources. Subclasses are responsible for the cleanup of resources acquired by the subclass. Subclasses that override finalize() in order to perform cleanup should be modified to use alternative cleanup mechanisms such as Cleaner and remove the overriding finalize method.
    Implementation Requirements:
    If this ZipFile has been subclassed and the close method has been overridden, the close method will be called by the finalization when ZipFile is unreachable. But the subclasses should not depend on this specific implementation; the finalization is not reliable and the finalize method is deprecated to be removed.
    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
      • finalize

        @Deprecated(since="9",
                    forRemoval=true)
        protected void finalize()
                         throws IOException
        Deprecated, for removal: This API element is subject to removal in a future version.
        The finalize method has been deprecated and will be removed. It is implemented as a no-op. Subclasses that override finalize in order to perform cleanup should be modified to use alternative cleanup mechanisms and to remove the overriding finalize method. The recommended cleanup for ZipFile object is to explicitly invoke close method when it is no longer in use, or use try-with-resources. If the close is not invoked explicitly the resources held by this object will be released when the instance becomes unreachable.
        Ensures that the system resources held by this ZipFile object are released when there are no more references to it.
        Overrides:
        finalize in class Object
        Throws:
        IOException - if an I/O error has occurred
        See Also:
        WeakReference, PhantomReference